赞
踩
本文主要参考官方文档对Docker Compose命令的用法进行一个总结,方便查阅。都是一些概念性的内容,不涉及具体操作。
对于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的版本信息。构建或重新构建项目中的服务。服务容器构建后会带上一个标记名,默认为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
:并行构建镜像。验证和查看Compose配置文件。
docker-compose config [options]
--resolve-image-digests
:为镜像添加对应的摘要信息。--no-interpolate
:不要给环境变量插值。-q, --quiet
:只验证格式是否正确,不输出任何内容。--services
:打印所有服务名称,一行一个。--volumes
:打印所有挂载卷,一行一个。--hash="*"
:打印服务配置hash,一行一个。创建服务容器。
不推荐使用该命令,用
up
命令的--no-start
选项代替。
docker-compose create [options] [SERVICE...]
--force-recreate
:重新创建容器,即使它的配置和镜像没有改变。不兼容--no-recreate
。--no-recreate
:如果容器已经存在,则不需要重新创建。不兼容--force-recreate
。--no-build
:即使缺失也不构建镜像。--build
:创建容器前构建镜像。停止项目并删除容器、网络、挂载卷和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 [options] [SERVICE...]
--json
:以json对象流的格式输出事件信息。在一个运行的容器中执行命令。等价于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 COMMAND
发送SIGKILL
信号来强制停止运行中的服务容器。发送的信号可以选择。
docker-compose kill [options] [SERVICE...]
-s SIGNAL
:指定向容器发送信号,默认信号为SIGKILL
。查看服务容器的日志输出。
docker-compose logs [options] [SERVICE...]
--no-color
:单色输出,不显示其他颜色。-f, --follow
:跟踪日志输出,即实时查看日志。-t, --timestamps
:显示时间戳。--tail="all"
:仅显示指定行数的最新日志信息,即从日志结尾开始显示指定行数。暂停正在运行的服务容器。
docker-compose pause [SERVICE...]
打印某个容器端口映射的公共端口。
docker-compose port [options] SERVICE PRIVATE_PORT
--protocol=proto
:指定端口协议,tcp或udp,默认tcp。--index=index
:如果服务有多个容器,指定命令对象容器的序号,默认为1。列出项目中目前的所有容器。
docker-compose ps [options] [SERVICE...]
-q, --quiet
:仅显示id。--services
:显示服务。--filter KEY=VAL
:通过属性过滤服务。-a, --all
:显示所有已停止容器,包括运行命令创建的那些容器。拉取服务依赖的镜像,该服务依赖的镜像需要在Compose配置文件中指定。
docker-compose pull [options] [SERVICE...]
--ignore-pull-failures
:忽略拉取镜像过程中的错误。--parallel
:不推荐使用,并行拉取多个镜像。默认启用。--no-parallel
:禁用并行拉取。-q, --quiet
:拉取时不打印进度信息。--include-deps
:还将拉取被声明为依赖项的服务。推送服务创建的镜像到镜像仓库。
docker-compose push [options] [SERVICE...]
--ignore-push-failures
:忽略推送镜像过程中的错误。重启服务。如果对Compose配置进行变更,运行此命令后这些变更不会被反映出来。
docker-compose restart [options] [SERVICE...]
-t, --timeout TIMEOUT
:指定重启前停止容器的超时时间,单位秒,默认值10s。删除所有停止状态的服务容器。默认情况下,不删除挂载到容器的数据卷,可以使用-v
来删除。任何不在卷中的数据都将丢失。不带任何选项运行该命令还会删除由docker-compose up
或docker-compose run
创建的一次性容器。
docker-compose rm [options] [SERVICE...]
-f, --force
:强制删除,包括运行中的容器。-s, --stop
:在删除之前停止容器。-v
:删除容器所挂载的数据卷。在指定服务上执行一个命令。默认情况下,如果存在关联服务,则所有关联的服务将会自动启动,除非这些服务已经在运行中。如果不希望自动启动关联的服务容器,可以使用--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=""
:指定容器内的工作目录。设置指定服务的容器数量。
不推荐使用该命令,更推荐使用
up
命令的--scale
选项来指定服务运行的容器个数。
docker-compose scale [options] [SERVICE=NUM...]
-t, --timeout TIMEOUT
:指定停止容器时的超时时间,单位秒,默认值10s。启动已存在的服务容器。
docker-compose start [SERVICE...]
停止运行中的服务容器。但不会删除它们,可以通过docker-compose start
再次启动这些容器。
docker-compose stop [options] [SERVICE...]
-t, --timeout TIMEOUT
:指定停止容器时的超时时间,单位秒,默认值10s。显示项目中正在运行的进程信息。
docker-compose top [SERVICE...]
恢复处于暂停状态中的服务。
docker-compose unpause [SERVICE...]
自动完成构建服务镜像,创建并启动服务容器等一系列操作。链接的服务都将自动启动,除非已经处于运行状态。
该命令默认为前台启动并且会打印所有容器的输出(本质上是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
设置将会覆盖该设置。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。