Docker Compose 概述
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过使用 YAML 文件,你可以配置应用所需的所有服务,并通过一个单一命令来创建和启动所有服务。Docker Compose 简化了多容器应用的管理,使得开发、测试和部署变得更加容易和高效。
主要特点
- 多容器应用的定义:使用一个 YAML 文件定义应用所需的所有服务。
- 一键启动和停止:通过简单的命令启动和停止所有服务。
- 服务依赖管理:通过配置服务依赖,确保服务按顺序启动。
- 可重复的开发环境:确保在不同环境中(如开发、测试、生产)应用的行为一致。
- 扩展和缩减服务:方便地扩展和缩减服务实例数量。
基本概念
- 服务(Service) :服务是一个独立的容器实例,它可以包含具体的应用程序代码及其依赖。
- 项目(Project) :一组关联的服务定义,组成一个独立的环境。项目通常由一个 Docker Compose 文件定义。
Docker Compose 文件示例
以下是一个典型的 docker-compose.yml 文件示例:
yaml
复制代码
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./web:/usr/share/nginx/html
db:
image: postgres:latest
environment:
POSTGRES_DB: exampledb
POSTGRES_USER: exampleuser
POSTGRES_PASSWORD: examplepass
ports:
- "5432:5432"
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
示例说明
-
version: '3.8': 定义 Compose 文件的版本。 -
services: 定义应用的所有服务。-
web: 定义一个名为web的服务。image: 指定服务使用的 Docker 镜像,这里使用的是官方的 Nginx 镜像。ports: 映射主机的 8080 端口到容器的 80 端口。(docker 命令的话,则是 -p 8080:80)volumes: 挂载主机目录到容器内的目录。
-
db: 定义一个名为db的服务。image: 指定服务使用的 Docker 镜像,这里使用的是官方的 PostgreSQL 镜像。environment: 设置环境变量,用于配置数据库。ports: 映射主机的 5432 端口到容器的 5432 端口。volumes: 使用命名卷来持久化数据。
-
-
volumes: 定义命名卷,用于持久化数据。
常用命令
-
启动服务:
bash 复制代码 docker-compose up使用
-d选项在后台运行:bash 复制代码 docker-compose up -d -
停止服务:
bash 复制代码 docker-compose down -
查看服务日志:
bash 复制代码 docker-compose logs查看特定服务的日志:
bash 复制代码 docker-compose logs <service_name> -
列出服务:
bash 复制代码 docker-compose ps -
重启服务:
bash 复制代码 docker-compose restart -
扩展服务:
bash 复制代码 docker-compose up --scale <service_name>=<num>例如,将
web服务扩展到 3 个实例:bash 复制代码 docker-compose up --scale web=3