docker 编写

描述Docker Compose
用法docker compose

描述

使用 Docker 定义和运行多容器应用程序

选项

选择违约描述
--all-resources包括所有资源,甚至包括服务未使用的资源
--ansiauto控制何时打印 ANSI 控制字符 (“never”|”总是“|”auto”)
--compatibility在向后兼容模式下运行 compose
--dry-run在试运行模式下执行命令
--env-file指定备用环境文件
-f, --file编写配置文件
--parallel-1控制最大并行度,-1 表示无限制
--profile指定要启用的配置文件
--progressauto设置进度输出的类型(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此外,还会指定此相同服务,则任何匹配的字段都会覆盖上一个文件。 新值,添加到webappservice 配置。

services:
  webapp:
    build: .
    environment:
      - DEBUG=1

当您使用多个 Compose 文件时,文件中的所有路径都相对于指定的第一个配置文件 跟-f.您可以使用--project-directory选项覆盖此基本路径。

使用-f以 (dash) 作为文件名从 stdin 读取配置。使用 stdin 时, configuration 是相对于当前工作目录的。-

-fflag 是可选的。如果您未在命令行中提供此标志,Compose 会遍历工作目录 及其父目录查找compose.yamldocker-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配置文件frontenddebug已启用。

配置文件也可以通过以下方式设置COMPOSE_PROFILES环境变量。

配置并行度

--parallel指定并发引擎调用的最大并行度级别。 叫docker compose --parallel 1 pull拉取 Compose 文件中定义的可拉取镜像 一次一个。这还可用于控制构建并发性。

并行度也可以通过COMPOSE_PARALLEL_LIMIT环境变量。

设置环境变量

您可以为各种 docker compose 选项设置环境变量,包括-f,-p--profiles标志。

设置COMPOSE_FILE环境变量等效于将-fCOMPOSE_PROJECT_NAME环境变量的作用与-pCOMPOSE_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

从上面的例子中,你可以看到第一步是拉取由dbservice,然后构建backend服务。 接下来,创建容器。这dbservice 启动,并且backendproxy等到dbservice 在启动之前运行正常。

试运行模式几乎适用于所有命令。您不能将试运行模式与不会更改 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监视服务的构建上下文,并在文件更新时重新构建/刷新容器