1、docker compose简介
docker compose
可以使用docker compose [-f
... ] [options] [COMMAND] [ARGS... ]
,以在Docker容器中构建和管理多个服务。也就是通过一个配置文件来管理多个Docker容器。
参考文档:https://docs.docker.com/engine/reference/commandline/compose/
2、docker compose语法
docker compose COMMAND
3、 docker compose命令
1)使用-f指定一个或多个组合文件的名称和路径
可以提供多个-f配置文件。当提供多个文件时,Compose会将它们组合成一个单独的配置。Compose会按照你提供配置文件的顺序构建配置文件。后续的文件会覆盖前一个文件,并将其添加到前一个文件中。
docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
docker-compose.yml:
services: webapp: image: examples/web ports: - "8000:8000" volumes: - "/data"
docker-compose.admin.yml也指定了相同的服务,任何匹配的字段都会覆盖前一个文件。新值添加到webapp服务配置中:
services: webapp: build: . environment: - DEBUG=1
2)指定单个Compose文件的路径
docker compose -f ~/sandbox/rails/compose.yaml pull db
3)使用-p指定项目名称
每个配置都有一个项目名。如果提供-p
标志,则可以指定项目名称。如果不指定该标志,Compose将使用当前目录名。项目名称也可以通过COMPOSE_PROJECT_NAME
环境变量设置。
docker compose -p my_project ps -a NAME SERVICE STATUS PORTS my_project_demo_1 demo running docker compose -p my_project logs demo_1 | PING localhost (127.0.0.1): 56 data bytes demo_1 | 64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.095 ms
4)使用配置文件启用可选服务
调用docker compose --profile frontend up
将使用profile 启动frontend
服务,而不使用任何指定的profile启动服务。也可以启用多个配置文件,例如,使用docker compose --profile frontend --profile debug up
配置文件 frontend
和debug
会被启用。
配置文件也可以通过COMPOSE_PROFILES
环境变量设置。
5)设置环境变量
可以为各种docker compose选项设置环境变量,包括-f
、-p
和--profiles
标记。
设置COMPOSE_FILE环境变量相当于传递-f标记,COMPOSE_PROJECT_NAME
环境变量相当于传递-p
标记,而COMPOSE_PROFILES
环境变量相当于传递--profiles
标记。
如果在命令行中显式设置了标记,则忽略相关的环境变量。
将环境变量COMPOSE_IGNORE_ORPHANS
设置为true
将停止docker compose检测项目的孤立的容器。
4、选项说明
名称, 简称 | 默认 | 描述 |
--ansi | auto | 控制何时打印ANSI控制字符 ("never"|"always"|"auto") |
--compatibility | 以向后兼容模式运行compose | |
--env-file | 指定另一个环境变量文件。 | |
--file,-f | compose配置文件 | |
--no-ansi | 不要打印ANSI控制字符(已弃用) | |
--parallel | -1 | 控制最大并行度,-1表示无限 |
--profile | 指定要启用的配置文件 | |
--project-directory | 指定另一个工作目录 (默认:第一个指定的Compose文件的路径) | |
--project-name , -p | 项目名称 | |
--verbose | 显示更多输出 | |
--version , -v | 显示Docker Compose的版本信息 | |
--workdir | 弃用!请使用--project-directory。 指定另一个工作目录 (默认:第一个指定的Compose文件的路径) |
5、子命令
命令 | 描述 |
docker compose build | 构建或重建服务 |
docker compose convert | 将compose文件转换为平台的规范格式 |
docker compose cp | 在服务容器和本地文件系统之间复制文件/文件夹 |
docker compose create | 为服务创建容器 |
docker compose down | 停止并移除容器,网络 |
docker compose events | 从容器中接收实时事件。 |
docker compose exec | 在正在运行的容器中执行命令。 |
docker compose images | 列出容器使用的镜像 |
docker compose kill | 强制停止服务容器。 |
docker compose logs | 查看容器的输出 |
docker compose ls | 运行compose项目的列表 |
docker compose pause | 暂停服务 |
docker compose port | 输出端口绑定的公共端口。 |
docker compose ps | 列出容器列表 |
docker compose pull | 拉取服务镜像 |
docker compose push | 推送服务镜像 |
docker compose restart | 重启服务容器 |
docker compose rm | 移除已停止的服务容器 |
docker compose run | 在服务上运行一次性命令。 |
docker compose start | 开始服务 |
docker compose stop | 停止服务 |
docker compose top | 显示正在运行的进程 |
docker compose unpause | 取消暂停的服务 |
docker compose up | 创建并启动容器 |
docker compose version | 显示Docker Compose的版本信息 |