Docker Compose命令说明

本文主要参考官方文档对Docker Compose命令的用法进行一个总结,方便查阅。都是一些概念性的内容,不涉及具体操作。

一、docker-compose CLI概述

对于Compose来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。使用docker-compose --help可以查看基本命令和用法,使用docker-compose [COMMAND] --help或者docker-compose help [COMMAND]可以查看具体某个命令的使用方法。而Docker Compose命令的基本的使用格式见下。

格式

docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]

选项
  • -f, --file FILE:指定使用的Compose配置文件,默认为docker-compose.yml,并且可以指定Compose配置文件位置,如果指定了多个文件,Compose会按照文件指定的顺序将它们组合为一个配置,对于相同字段,后续文件该字段配置会覆盖先前文件,对于新字段,会添加到之前的服务配置中。如果未提供此选项,Compose会遍历当前目录及其父目录来查找docker-compose.yml文件和docker-compose.override.yml文件,但必须至少提供docker-compose.yml文件,直到找到为止,如果找不到会报错。如果两个文件都位于同一级别目录,则Compose会将两个文件合并为一个配置。
  • -p, --project-name NAME:指定项目名称,默认使用当前工作目录名称作为项目名称。
  • -c, --context:指定上下文(context)名称。
  • --verbose:输出更多调试信息。
  • --log-level LEVEL:设置日志级别,其中日志级别共五种,分别为DEBUG、INFO、WARNING、ERROR和CRITICAL。
  • --no-ansi:不打印ANSI控制字符。
  • -v, --version:打印版本并退出。
  • -H, --host HOST:指定Docker服务地址。
  • --tls:启用TLS,如果指定-tlsverify则默认开启。
  • --tlscacert CA_PATH:仅信任CA签名证书。
  • --tlscert CLIENT_CERT_PATH:TLS证书文件的路径。
  • --tlskey TLS_KEY_PATH:TLS私钥文件的路径。
  • --tlsverify:启用TLS并远程校验。
  • --skip-hostname-check:不使用客户端证书中指定的名称校验Docker守护进程的主机名。
  • --project-directory PATH:指定工作目录,默认为Compose文件所在目录。
  • --compatibility:如果设置,Compose将尝试把v3文件中配置的配置项转换为等效的非Swarm配置项。
  • --env-file PATH:指定一个环境文件。
命令概述
  • build:构建或重新构建项目中的服务。
  • config:验证和查看Compose配置文件。
  • create:创建服务容器。
  • down:停止项目并删除容器、网络、挂载卷和up创建的镜像。
  • events:实时监控容器的事件信息。
  • exec:在一个运行的容器中执行命令。
  • help:获取一个命令的帮助信息。
  • images:列出项目中所有镜像。
  • kill:发送SIGKILL信号来强制停止服务容器。
  • logs:查看服务容器的日志输出。
  • pause:暂停服务。
  • port:打印某个容器端口映射的公共端口。
  • ps:列出项目中目前的所有容器。
  • pull:拉取服务依赖的镜像。
  • push:推送服务创建的镜像到镜像仓库。
  • restart:重启服务。
  • rm:删除所有停止状态的服务容器。
  • run:在指定服务上执行一个命令。
  • scale:设置指定服务的容器数量。
  • start:启动已存在的服务容器。
  • stop:停止运行中的服务容器。
  • top:显示项目中正在运行的进程信息。
  • unpause:恢复处于暂停状态中的服务。
  • up:自动完成构建服务镜像,创建并启动服务容器等一系列操作。
  • version:打印Docker Compose的版本信息。

二、docker-compose build

构建或重新构建项目中的服务。服务容器构建后会带上一个标记名,默认为project_service,例如composetest_db。如果更改了服务的Dockerfile或其构建目录的内容,可以执行docker-compose build来重新构建服务。

格式

docker-compose build [options] [--build-arg key=val...] [SERVICE...]

选项
  • --compress:使用gzip压缩构建上下文(build context)。
  • --force-rm:删除构建过程中的临时容器。
  • --no-cache:构建镜像过程中不使用缓存。
  • pull:始终尝试通过pull来获取更新版本的镜像。
  • -m, --memory MEM:设置创建的容器所使用的内存限制。
  • --build-arg key=val:设置服务创建时的参数。
  • --parallel:并行构建镜像。

三、docker-compose config

验证和查看Compose配置文件。

格式

docker-compose config [options]

选项
  • --resolve-image-digests:为镜像添加对应的摘要信息。
  • --no-interpolate:不要给环境变量插值。
  • -q, --quiet:只验证格式是否正确,不输出任何内容。
  • --services:打印所有服务名称,一行一个。
  • --volumes:打印所有挂载卷,一行一个。
  • --hash="*":打印服务配置hash,一行一个。

四、docker-compose create

创建服务容器。

不推荐使用该命令,用up命令的--no-start选项代替。

格式

docker-compose create [options] [SERVICE...]

选项
  • --force-recreate:重新创建容器,即使它的配置和镜像没有改变。不兼容--no-recreate
  • --no-recreate:如果容器已经存在,则不需要重新创建。不兼容--force-recreate
  • --no-build:即使缺失也不构建镜像。
  • --build:创建容器前构建镜像。

五、docker-compose down

停止项目并删除容器、网络、挂载卷和up创建的镜像。默认情况下,只删除Compose配置文件中定义的服务容器,Compose配置文件networks属性定义的网络和默认网络。定义为external的网络和数据卷永远不会删除。

格式

docker-compose down [options]

选项
  • --rmi type:指定删除镜像的类型,包括all(所有镜像)和local(未通过image 字段设置自定义标签的镜像)。
  • -v, --volumes:删除挂载数据卷。
  • --remove-orphans:删除Compose配置文件中未定义的服务容器。
  • -t, --timeout TIMEOUT:指定停止容器时的超时时间,单位秒,默认值10s。

六、docker-compose events

实时监控容器的事件信息。

格式

docker-compose events [options] [SERVICE...]

选项
  • --json:以json对象流的格式输出事件信息。

七、docker-compose exec

在一个运行的容器中执行命令。等价于docker exec。使用该子命令可以在服务中运行任意命令。默认情况下,命令会分配TTY伪终端,因此可以使用命令docker-compose exec web sh来获得交互式提示。

格式

docker-compose exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]

选项
  • -d, --detach:分离模式,后台运行命令。
  • --privileged:赋予该进程更多特权。
  • -u, --user USER:以给定的用户身份运行命令。
  • -T:不分配TTY伪终端,默认会分配。
  • --index=index:当服务有多个容器实例时指定容器索引,默认为第一个。
  • -e, --env KEY=VAL:设置环境变量(可以多次使用,不支持低于1.25的API)。
  • -w, --workdir DIR:为这些命令指定工作目录的路径。

八、docker-compose help

获取一个命令的帮助信息和使用方法说明。

格式

docker-compose help COMMAND

九、docker-compose kill

发送SIGKILL信号来强制停止运行中的服务容器。发送的信号可以选择。

格式

docker-compose kill [options] [SERVICE...]

选项
  • -s SIGNAL:指定向容器发送信号,默认信号为SIGKILL

十、docker-compose logs

查看服务容器的日志输出。

格式

docker-compose logs [options] [SERVICE...]

选项
  • --no-color:单色输出,不显示其他颜色。
  • -f, --follow:跟踪日志输出,即实时查看日志。
  • -t, --timestamps:显示时间戳。
  • --tail="all":仅显示指定行数的最新日志信息,即从日志结尾开始显示指定行数。

十一、docker-compose pause

暂停正在运行的服务容器。

格式

docker-compose pause [SERVICE...]

十二、docker-compose port

打印某个容器端口映射的公共端口。

格式

docker-compose port [options] SERVICE PRIVATE_PORT

选项
  • --protocol=proto:指定端口协议,tcp或udp,默认tcp。
  • --index=index:如果服务有多个容器,指定命令对象容器的序号,默认为1。

十三、docker-compose ps

列出项目中目前的所有容器。

格式

docker-compose ps [options] [SERVICE...]

选项
  • -q, --quiet:仅显示id。
  • --services:显示服务。
  • --filter KEY=VAL:通过属性过滤服务。
  • -a, --all:显示所有已停止容器,包括运行命令创建的那些容器。

十四、docker-compose pull

拉取服务依赖的镜像,该服务依赖的镜像需要在Compose配置文件中指定。

格式

docker-compose pull [options] [SERVICE...]

选项
  • --ignore-pull-failures:忽略拉取镜像过程中的错误。
  • --parallel:不推荐使用,并行拉取多个镜像。默认启用。
  • --no-parallel:禁用并行拉取。
  • -q, --quiet:拉取时不打印进度信息。
  • --include-deps:还将拉取被声明为依赖项的服务。

十五、docker-compose push

推送服务创建的镜像到镜像仓库。

格式

docker-compose push [options] [SERVICE...]

选项
  • --ignore-push-failures:忽略推送镜像过程中的错误。

十六、docker-compose restart

重启服务。如果对Compose配置进行变更,运行此命令后这些变更不会被反映出来。

格式

docker-compose restart [options] [SERVICE...]

选项
  • -t, --timeout TIMEOUT:指定重启前停止容器的超时时间,单位秒,默认值10s。

十七、docker-compose rm

删除所有停止状态的服务容器。默认情况下,不删除挂载到容器的数据卷,可以使用-v来删除。任何不在卷中的数据都将丢失。不带任何选项运行该命令还会删除由docker-compose updocker-compose run创建的一次性容器。

格式

docker-compose rm [options] [SERVICE...]

选项
  • -f, --force:强制删除,包括运行中的容器。
  • -s, --stop:在删除之前停止容器。
  • -v:删除容器所挂载的数据卷。

十八、docker-compose run

在指定服务上执行一个命令。默认情况下,如果存在关联服务,则所有关联的服务将会自动启动,除非这些服务已经在运行中。如果不希望自动启动关联的服务容器,可以使用--no-deps选项。

该命令和启动容器后运行指定的命令类似,数据卷、链接等都将会按照配置自动创建。但有两点不同,第一,run传递的命令将会覆盖服务配置中定义的命令。第二,该命令不会创建任何端口,以避免发生端口冲突。如果确定要创建服务的端口并将其映射到主机,可以使用--service-ports选项,也可以使用--publish-p选项手动指定端口映射,就跟用docker run时一样。

格式

docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...]

选项
  • -d, --detach:分离模式,后台运行容器,打印容器名称。
  • --name NAME:给容器指定一个名称。
  • --entrypoint CMD:覆盖镜像中的默认容器启动命令。
  • -e KEY=VAL:设置环境变量,可以多次使用该选项指定多个环境变量。
  • -l, --label KEY=VAL:添加或覆盖label,可以多次使用此选项。
  • -u, --user="":指定运行容器的用户名或uid。
  • --no-deps:不启动关联服务。
  • --rm:运行命令后删除容器,后台模式除外。
  • -p, --publish=[]:映射容器端口到本地主机。
  • --service-ports:在启用服务端口的情况下运行命令并将服务端口映射到本地主机。
  • --use-aliases:设置在容器连接到的网络中使用的服务的网络别名。
  • -v, --volume=[]:绑定挂载数据卷,默认为[]
  • -T:不分配TTY伪终端,默认会分配。
  • -w, --workdir="":指定容器内的工作目录。

十九、docker-compose scale

设置指定服务的容器数量。

不推荐使用该命令,更推荐使用up命令的--scale选项来指定服务运行的容器个数。

格式

docker-compose scale [options] [SERVICE=NUM...]

选项
  • -t, --timeout TIMEOUT:指定停止容器时的超时时间,单位秒,默认值10s。

二十、docker-compose start

启动已存在的服务容器。

格式

docker-compose start [SERVICE...]

二一、docker-compose stop

停止运行中的服务容器。但不会删除它们,可以通过docker-compose start再次启动这些容器。

格式

docker-compose stop [options] [SERVICE...]

选项
  • -t, --timeout TIMEOUT:指定停止容器时的超时时间,单位秒,默认值10s。

二二、docker-compose top

显示项目中正在运行的进程信息。

格式

docker-compose top [SERVICE...]

二三、docker-compose unpause

恢复处于暂停状态中的服务。

格式

docker-compose unpause [SERVICE...]

二四、docker-compose up

自动完成构建服务镜像,创建并启动服务容器等一系列操作。链接的服务都将自动启动,除非已经处于运行状态。

该命令默认为前台启动并且会打印所有容器的输出(本质上是docker-compose logs -f),很方便调试,通过CTRL + C停止命令时,所有容器都将停止。使用-d选项可以后台启动并运行所有容器,推荐在生产环境中使用。

默认情况,如果服务容器已经存在,该命令将会尝试停止容器,然后重新创建,保持使用挂载的卷,以保证新启动的服务匹配Compose配置文件的最新内容。如果不想容器被重新创建,可以使用--no-recreate选项。如果想强制停止并重新创建所有容器,可以使用--force-recreate选项。

格式

docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]

选项
  • -d, --detach:分离模式,后台运行容器,打印容器名称。不兼容--abort-on-container-exit
  • --no-color:单色输出,不显示其他颜色。
  • --quiet-pull:拉取时不打印进度信息。
  • --no-deps:不启动关联服务。
  • --force-recreate:重新创建容器,即使它的配置和镜像没有改变。
  • --always-recreate-deps:重新创建所依赖的容器。不兼容--no-recreate
  • --no-recreate:如果容器已经存在,则不需要重新创建。不兼容--force-recreate-V
  • --no-build:即使缺失也不构建镜像。
  • --no-start:创建服务之后不启动。
  • --build:启动容器前构建镜像。
  • --abort-on-container-exit:如果有任何容器停止则停止所有服务容器。不兼容-d
  • -t, --timeout TIMEOUT:在连接到容器时或容器已经运行时停止容器时的超时时间,单位秒,默认值10s。
  • -V, --renew-anon-volumes:重新创建一个匿名数据卷而不是从以前的容器中回收数据。
  • --remove-orphans:删除Compose配置文件中未定义的服务容器。
  • --exit-code-from SERVICE:退出时返回指定服务容器的退出代码。
  • --scale SERVICE=NUM:扩展指定服务的容器实例到指定数量。如果Compose配置文件存在scale设置将会覆盖该设置。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RtxTitanV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值