docker 编写
描述 | Docker Compose |
---|---|
用法 | docker compose |
描述
使用 Docker 定义和运行多容器应用程序
选项
选择 | 违约 | 描述 |
---|---|---|
--all-resources | 包括所有资源,甚至包括服务未使用的资源 | |
--ansi | auto | 控制何时打印 ANSI 控制字符 (“never”|”总是“|”auto”) |
--compatibility | 在向后兼容模式下运行 compose | |
--dry-run | 在试运行模式下执行命令 | |
--env-file | 指定备用环境文件 | |
-f, --file | 编写配置文件 | |
--parallel | -1 | 控制最大并行度,-1 表示无限制 |
--profile | 指定要启用的配置文件 | |
--progress | auto | 设置进度输出的类型(auto、tty、plain、json、quiet) |
--project-directory | 指定备用工作目录 (默认:第一个指定的 Compose 文件的路径) | |
-p, --project-name | 项目名称 |
例子
用-f
指定一个或多个 Compose 文件的名称和路径
使用-f
标志来指定 Compose 配置文件的位置。
指定多个 Compose 文件
您可以提供多个-f
配置文件。当您提供多个文件时,Compose 会将它们合并为一个
配置。Compose 会按照您提供文件的顺序构建配置。后续文件覆盖并添加
到他们的前辈。
例如,请考虑以下命令行:
$ docker compose -f docker-compose.yml -f docker-compose.admin.yml run backup_db
这docker-compose.yml
文件可能会指定webapp
服务。
services:
webapp:
image: examples/web
ports:
- "8000:8000"
volumes:
- "/data"
如果docker-compose.admin.yml
此外,还会指定此相同服务,则任何匹配的字段都会覆盖上一个文件。
新值,添加到webapp
service 配置。
services:
webapp:
build: .
environment:
- DEBUG=1
当您使用多个 Compose 文件时,文件中的所有路径都相对于指定的第一个配置文件
跟-f
.您可以使用--project-directory
选项覆盖此基本路径。
使用-f
以 (dash) 作为文件名从 stdin 读取配置。使用 stdin 时,
configuration 是相对于当前工作目录的。-
这-f
flag 是可选的。如果您未在命令行中提供此标志,Compose 会遍历工作目录
及其父目录查找compose.yaml
或docker-compose.yaml
文件。
指定单个 Compose 文件的路径
您可以使用-f
标志指定不在当前目录中的 Compose 文件的路径
从命令行或通过设置COMPOSE_FILE
环境变量。
有关使用-f
选项,假设您正在运行 Compose Rails 示例,并且
有一个compose.yaml
文件中名为sandbox/rails
.您可以使用类似docker compose pull
自
使用-f
标志,如下所示:
$ docker compose -f ~/sandbox/rails/compose.yaml pull db
用-p
指定项目名称
每个配置都有一个项目名称。Compose 使用 以下机制(按优先顺序排列):
- 这
-p
命令行标志 - 这
COMPOSE_PROJECT_NAME
环境变量 - 顶层
name:
变量(或最后一个name:
从使用-f
) - 这
basename
的项目目录(或 包含使用-f
) - 这
basename
如果未指定配置文件,则为当前目录 项目名称必须仅包含小写字母、十进制数字、短划线、 和下划线,并且必须以小写字母或十进制数字开头。如果 这basename
的项目目录或当前目录违反了此 constraint 中,则必须使用其他机制之一。
$ 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
使用配置文件启用可选服务
用--profile
指定一个或多个活动配置文件
叫docker compose --profile frontend up
使用配置文件启动 Servicesfrontend
和服务
没有任何指定的配置文件。
您还可以启用多个配置文件,例如使用docker compose --profile frontend --profile debug up
配置文件frontend
和debug
已启用。
配置文件也可以通过以下方式设置COMPOSE_PROFILES
环境变量。
配置并行度
用--parallel
指定并发引擎调用的最大并行度级别。
叫docker compose --parallel 1 pull
拉取 Compose 文件中定义的可拉取镜像
一次一个。这还可用于控制构建并发性。
并行度也可以通过COMPOSE_PARALLEL_LIMIT
环境变量。
设置环境变量
您可以为各种 docker compose 选项设置环境变量,包括-f
,-p
和--profiles
标志。
设置COMPOSE_FILE
环境变量等效于将-f
旗COMPOSE_PROJECT_NAME
环境变量的作用与-p
旗COMPOSE_PROFILES
环境变量等价于--profiles
旗
和COMPOSE_PARALLEL_LIMIT
与--parallel
旗。
如果在命令行上显式设置了标志,则会忽略关联的环境变量。
设置COMPOSE_IGNORE_ORPHANS
环境变量设置为true
阻止 Docker Compose 检测孤立的
containers 的 Frameworks 进行项目。
设置COMPOSE_MENU
环境变量设置为false
运行时禁用 Helper 菜单docker compose up
在附加模式下。或者,您也可以运行docker compose up --menu=false
以禁用 helper 菜单。
使用 Dry Run 模式测试您的命令
用--dry-run
标志来测试命令,而不更改应用程序堆栈状态。
试运行模式会显示 Compose 在执行命令时应用的所有步骤,例如:
$ docker compose --dry-run up --build -d
[+] Pulling 1/1
✔ DRY-RUN MODE - db Pulled 0.9s
[+] Running 10/8
✔ DRY-RUN MODE - build service backend 0.0s
✔ DRY-RUN MODE - ==> ==> writing image dryRun-754a08ddf8bcb1cf22f310f09206dd783d42f7dd 0.0s
✔ DRY-RUN MODE - ==> ==> naming to nginx-golang-mysql-backend 0.0s
✔ DRY-RUN MODE - Network nginx-golang-mysql_default Created 0.0s
✔ DRY-RUN MODE - Container nginx-golang-mysql-db-1 Created 0.0s
✔ DRY-RUN MODE - Container nginx-golang-mysql-backend-1 Created 0.0s
✔ DRY-RUN MODE - Container nginx-golang-mysql-proxy-1 Created 0.0s
✔ DRY-RUN MODE - Container nginx-golang-mysql-db-1 Healthy 0.5s
✔ DRY-RUN MODE - Container nginx-golang-mysql-backend-1 Started 0.0s
✔ DRY-RUN MODE - Container nginx-golang-mysql-proxy-1 Started Started
从上面的例子中,你可以看到第一步是拉取由db
service,然后构建backend
服务。
接下来,创建容器。这db
service 启动,并且backend
和proxy
等到db
service 在启动之前运行正常。
试运行模式几乎适用于所有命令。您不能将试运行模式与不会更改 Compose 堆栈状态的命令一起使用,例如ps
,ls
,logs
例如。
子命令
命令 | 描述 |
---|---|
docker compose alpha | 实验性命令 |
docker compose build | 构建或重建服务 |
docker compose config | 以规范格式解析、解析和渲染 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 版本信息 |
docker compose wait | 阻止,直到所有(或指定)服务的容器停止。 |
docker compose watch | 监视服务的构建上下文,并在文件更新时重新构建/刷新容器 |