前言
本文主要学习Docker Compose 的命令操作方法。
本文主要以docker-compose 版本1.29.2为例。
Docker Compose的命令说明
对于 Compose 来说,⼤部分命令的对象既可以是项⽬本身,也可以指定为项⽬中的服务或者容器。 如果没有特别的说明,命令对象将是项⽬,这意味着项⽬中所有的服务都会受到命令影响。
执⾏docker-compose [COMMAND] --help
或者docker-compose help [COMMAND]
可以查看具体某个命令的使⽤格式。
docker-compose 命令的基本的使⽤格式是:
docker-compose [-f=<arg>...] [options] [COMMAND] [ARGS...]
命令选项:
-f, --file FILE 指定使⽤的 Compose 模板⽂件,默认为 docker-compose.yml,可以多次指定。
-p, --project-name NAME 指定项⽬名称,默认将使⽤所在⽬录名称作为项⽬名。
–verbose 输出更多调试信息。
-v, --version 打印版本并退出。
-c, --context NAME 指定上下文名称
–log-level LEVEL 设置日志级别(DEBUG、INFO、WARNING、ERROR、CRITICAL)
–ansi (never|always|auto) 控制何时打印 ANSI 控制字符
–no-ansi 不打印 ANSI 控制字符(已弃用)
-v, --version 打印版本并退出
-H, --host HOST 要连接的守护进程套接字
–tls 使用 TLS;由 --tlsverify 暗示
–tlscacert CA_PATH 仅由该 CA 签名的信任证书
–tlscert CLIENT_CERT_PATH TLS 证书文件的路径
–tlskey TLS_KEY_PATH TLS 密钥文件的路径
–tlsverify 使用 TLS 并验证远程
–skip-hostname-check 不检查守护进程的主机名客户端证书中指定的名称
–project-directory PATH 指定备用工作目录(默认:Compose 文件的路径)
–compatibility 如果设置,Compose 将尝试转换键在 v3 文件中到它们的非 Swarm 等效项(已弃用)
–env-file PATH 指定备用环境文件
1、build
格式为:docker-compose build [options] [SERVICE...]
构建(重新构建)项⽬中的服务容器:服务容器⼀旦构建后,将会带上⼀个标记名,例如对于 web 项⽬中的⼀个 db 容器,可能是 web_db。
可以随时在项⽬⽬录下运⾏ docker-compose build
来重新构建服务。
选项包括:
–force-rm 删除构建过程中的临时容器。
–no-cache 构建镜像过程中不使⽤ cache(会加长构建过程)。
–pull 始终尝试通过 pull 来获取更新版本的镜像。
–build-arg key=val 设置服务的构建时变量。
–compress 使用 gzip 压缩构建上下文。
-m, --memory MEM 设置构建容器的内存限制。
–no-rm 成功构建后不要删除中间容器。
–parallel 并行构建镜像。
–progress string 设置进度输出的类型(auto、plain、tty)。
-q, --quiet 不向 STDOUT 打印任何内容
2、config
格式为:docker-compose config [options]
验证 Compose ⽂件格式是否正确,若正确则显示配置,若格式错误显示错误原因。
选项包括:
–resolve-image-digests :为镜像添加对应的摘要信息;。
–no-interpolate 不要插入环境变量。
-q, --quiet 只检验格式正确与否,不输出内容。
–profiles 打印配置文件名称。
–services 打印出 Compose 中所有的服务信息;。
–volumes 打印出 Compose 中所有的挂载卷信息;。
–hash=“*” 打印服务配置哈希。为指定服务列表设置“service1,service2”或使用通配符来显示所有服务。
3、 create
格式为:docker-compose create [options] [SERVICE...]
为服务创建容器。此命令已弃用。将 up
命令与 --no-start
一起使用。
选项包括:
–force-recreate 重新创建容器,即使它们的配置和镜像没有改变。与 --no-recreate 不兼容。
–no-recreate 如果容器已经存在,不要重新创建它们。与 --force-recreate 不兼容。
–no-build 不构建镜像,即使它丢失了。
–build 在创建容器之前构建镜像。
4、down
格式为:docker-compose down [options]
此命令将会停⽌ up 命令所启动的容器,并移除⽹络。
–rmi type 删除镜像。指定删除镜像的类型,包括 all (所有镜像), local (仅本地);
v, --volumes 删除挂载数据卷;
–remove-orphans 清除孤儿容器,即未在 Compose 服务中定义的容器;
-t, --timeout TIMEOUT 指定超时时间,默认为 10s。
5、events
格式为:docker-compose events [options] [SERVICE... ]
。
实时监控容器的事件信息。
选项包括:
-json: Json 对象流格式输出事件信息。
6、exec
格式为: docker-compose exec [options] [-e KEY=VAL...] [--] SERVICE COMMAND [ARGS...]
选项包括:
-d, --detach 分离模式:在后台运行命令。
–privileged 为进程提供扩展权限。
-u, --user USER 以该用户身份运行命令。
-T 禁用伪 tty 分配。默认情况下docker-compose exec
分配一个 TTY。
–index=index 容器的索引,如果有多个 服务实例 [默认值:1]
-e, --env KEY=VAL 设置环境变量(可以多次使用,API < 1.25 不支持)
-w, --workdir DIR 此命令的 workdir 目录的路径。
7、help
获得⼀个命令的帮助。
8、images
格式为: images [options] [--] [SERVICE...]
列出 Compose ⽂件中包含的镜像。
选项包括:
-q :仅显示镜像的 ID。
9、kill
格式为:docker-compose kill [options] [SERVICE...]
。
通过发送 SIGKILL 信号来强制停⽌服务容器。⽀持通过 -s 参数来指定发送的信号,例如通过如下指令发送 SIGINT 信号。
docker-compose kill -s SIGINT
10、logs
格式为:docker-compose logs [options] [SERVICE...]
查看服务容器的输出。默认情况下, docker-compose 将对不同的服务输出使⽤不同的颜⾊来区分。
选项包括:
–no-color 关闭彩色输出。
-f, --follow 跟随日志输出。
-t, --timestamps 显示时间戳。
–tail=“all” 仅显示指定行数的最新日志消息。 --no-log-prefix 不在日志中打印前缀。
11、pause
格式为docker-compose pause [SERVICE...]
暂停⼀个服务容器。
12、port
格式为docker-compose port [options] SERVICE PRIVATE_PORT
,打印某个容器端⼝所映射的公共端⼝。
选项:
–protocol=proto 指定端⼝协议,tcp(默认值)或者 udp。
–index=index 如果同⼀服务存在多个容器,指定命令对象容器的序号(默认为 1)。
13、ps
格式为docker-compose ps [options] [SERVICE...]
列出项⽬中⽬前的所有容器。
选项:
-q 只打印容器的 ID 信息。
14、pull
格式为 docker-compose pull [options] [SERVICE...]
拉取服务依赖的镜像。
选项:
–ignore-pull-failures 忽略拉取镜像过程中的错误。
15、push
格式:push [options] [--] [SERVICE...]
推送服务依赖的镜像到 Docker 镜像仓库。
选项:
–ignore-push-failures 推送它可以推送的内容并忽略推送失败的图像。
16、restart
格式为docker-compose restart [options] [--] [SERVICE...]
重启项⽬中的服务。
选项:
-t, --timeout TIMEOUT 指定重启前停⽌容器的超时(默认为 10 秒)。
17、rm
格式为docker-compose rm [options] [SERVICE...]
删除所有(停⽌状态的)服务容器。推荐先执⾏ docker-compose stop 命令来停⽌容器。
选项:
-f, --force 强制直接删除,包括⾮停⽌状态的容器。⼀般尽量不要使⽤该选项。
-v 删除容器所挂载的数据卷。
-s, --stop 如果需要,在删除之前停止容器
-a, --all 已弃用 - 无效。
18、run
格式为docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND][ARGS...]
在指定服务上执⾏⼀个命令。例如:
docker-compose run ubuntu ping docker.com
将会启动⼀个 ubuntu 服务容器,并执⾏ ping docker.com 命令。默认情况下,如果存在关联,则所有关联的服务将会⾃动被启动,除⾮这些服务已经在运⾏中。
该命令类似启动容器后运⾏指定的命令,相关卷、链接等等都将会按照配置⾃动创建。
给定命令将会覆盖原有的⾃动运⾏命令; 不会⾃动创建端⼝,以避免冲突。
如果不希望⾃动启动关联的容器,可以使⽤ --no-deps
选项,例如:
docker-compose run --no-deps web python manage.py shell
将不会启动 web 容器 所关联的其它容器,选项:
-d 后台运⾏容器。
–name NAME 为容器指定⼀个名字。
–entrypoint CMD 覆盖默认的容器启动指令。
-e KEY=VAL 设置环境变量值,可多次使⽤选项来设置多个环境变量。
-l, --label KEY=VAL 添加或覆盖一个标签(可以多次使用)
-u, --user=“” 指定运⾏容器的⽤户名或者 uid。
–no-deps 不⾃动启动关联的服务容器。
–rm 运⾏命令后⾃动删除容器,d 模式下将忽略。
-p, --publish=[] 映射容器端⼝到本地主机。
–service-ports 配置服务端⼝并映射到本地主机。
–use-aliases 在网络中使用服务的网络别名容器连接到。
-v, --volume=[] 绑定挂载卷(默认[])
-T 不分配伪 tty,意味着依赖 tty 的指令将⽆法运⾏。
-w, --workdir=“” 容器内的工作目录
19、scale
格式为docker-compose scale [options] [SERVICE=NUM...]
设置指定服务运⾏的容器个数。
通过 service=num 的参数来设置数量。例如:
docker-compose scale web=3 db=2
将启动 3 个容器运⾏ web 服务,2 个容器运⾏ db 服务。
⼀般的,当指定数⽬多于该服务当前实际运⾏容器,将新创建并启动容器;反之,将停⽌容器。
选项:
-t, --timeout TIMEOUT 停⽌容器时候的超时(默认为 10 秒)。
20、start
格式为docker-compose start [SERVICE...]
启动已经存在的服务容器。
20、stop
格式为docker-compose stop [options] [SERVICE...],
停⽌已经处于运⾏状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器。
选项:
-t, --timeout TIMEOUT 停⽌容器时候的超时(默认为 10 秒)。
21、top
格式为top [SERVICE...]
查看各个服务容器内运⾏的进程。
22、unpause
格式为docker-compose unpause [SERVICE...]
恢复处于暂停状态中的服务。
23、up
格式为docker-compose up [options] [--scale SERVICE=NUM...] [--] [SERVICE...]
该命令⼗分强⼤,它将尝试⾃动完成包括构 建镜像,(重新)创建服务,启动服务,并关联服务相关容器的⼀系列操作。链接的服务都将会被⾃ 动启动,除⾮已经处于运⾏状态。 可以说,⼤部分时候都可以直接通过该命令来启动⼀个项⽬。
默认情况, docker-compose up
启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可 以很⽅便进⾏调试。 当通过 Ctrl-C
停⽌命令时,所有容器将会停⽌。
如果使⽤ docker-compose up -d
,将会在后台启动并运⾏所有的容器。⼀般推荐⽣产环境下使⽤该选项。
默认情况,如果服务容器已经存在, docker-compose up
将会尝试停⽌容器,然后重新创建(保持使⽤ volumes-from
挂载的卷),以保证新启动的服务匹配 docker-compose.yml
⽂件的最新内容。如果⽤户不希望容器被停⽌并重新创建,可以使⽤ docker-compose up --no-recreate
。这样将只会启动 处于停⽌状态的容器,⽽忽略已经运⾏的服务。
如果⽤户只想重新部署某个服务,可以使⽤ docker-compose up --no-deps -d <SERVICE_NAME>
来重新 创建服务并后台停⽌旧服务,启动新服务,并不会影响到其所依赖的服务。
选项:
-d 在后台运⾏服务容器。
–no-color 不使⽤颜⾊来区分不同的服务的控制台输出。
–no-deps 不启动服务所链接的容器。
–force-recreate 强制重新创建容器,不能与 --no-recreate 同时使⽤。
–no-recreate 如果容器 已经存在了,则不重新创建,不能与 --force-recreate 同时使⽤。 --no-build
不⾃动构建缺失的服务镜像。-t, --timeout TIMEOUT 停⽌容器时候的超时(默认为 10 秒)。
–quiet-pull 拉取不打印进度信息
–always-recreate-deps 重新创建依赖容器。与 --no-recreate 不兼容。
–no-build 不要构建镜像,即使它丢失了。
–no-start 创建服务后不启动服务。
–build 在启动容器之前构建镜像。
–abort-on-container-exit 停止所有容器,如果有任何容器停了下来。与 -d 不兼容。
–attach-dependencies 附加到依赖容器。
-V, --renew-anon-volumes 重新创建匿名卷而不是检索来自先前容器的数据。
–remove-orphans 删除未定义服务的容器 在撰写文件中。
–exit-code-from SERVICE 返回所选服务的退出代码容器。暗示 --abort-on-container-exit。
–scale SERVICE=NUM 将 SERVICE 扩展到 NUM 个实例。覆盖Compose 文件中的
scale
设置(如果存在)。–no-log-prefix 不要在日志中打印前缀。
24、version
格式为 docker-compose version [--short]
打印版本信息。
选项:
–short 仅显示 Compose 的版本号。