前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >附003.Docker Compose命令详解

附003.Docker Compose命令详解

作者头像
木二
发布2019-07-26 09:47:21
2K0
发布2019-07-26 09:47:21
举报
文章被收录于专栏:木二天空木二天空

一 Docker Compose命令格式

代码语言:javascript
复制
  1 Usage:
  2   docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  3   docker-compose -h|--help

二 Docker Compose命令参数及解释

代码语言:javascript
复制
  1 Usage:
  2   docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  3   docker-compose -h|--help
  4 
  5 Options:
  6   -f, --file FILE             #指定一个用于替换默认的yml配置文件,默认为docker-compose.yml
  7   -p, --project-name NAME     #指定一个用于替换默认的项目名称,默认为当前目录名
  8   --verbose                   #显示更多输出
  9   --log-level LEVEL           #设置log级别,包括(DEBUG, INFO, WARNING, ERROR, CRITICAL)
 10   --no-ansi                   #不显示ANSI控制字符
 11   -v, --version               #现实Docker Compose版本
 12   -H, --host HOST             #守护进程连接至某主机
 13 
 14   --tls                       #使用TLS证书
 15   --tlscacert CA_PATH         #指定的个CA证书路径
 16   --tlscert CLIENT_CERT_PATH  #指定TLS certificate文件路径
 17   --tlskey TLS_KEY_PATH       #指定TLS key文件路径
 18   --tlsverify                 #使用TLS并且验证
 19   --skip-hostname-check       #不要根据客户端证书中指定的名称检查守护进程的主机名
 20   --project-directory PATH    #指定一个用于替换默认的项目目录,默认为Compose file所在目录
 21   --compatibility             If set, Compose will attempt to convert deploy
 22                               keys in v3 files to their non-Swarm equivalent
 23 
 24 Commands:
 25   build              #构建或重建服务
 26   bundle             #从Compose文件生成分布式应用程序包(DAB)
 27   config             #验证并查看Compose文件。
 28   create             #为服务创建容器,该命令被弃用,可使用“up”命令。
 29   down               #停止并移除containers, networks, images以及volumes
 30   events             #展示项目中每个容器的容器事件
 31   exec               #相当于docker exec,使用此子命令,您可以在服务中运行任意命令
 32   help               #查看帮助
 33   images             #列出镜像
 34   kill               #强制停止容器
 35   logs               #查看容器log
 36   pause              #暂停服务
 37   port               #显示某个容器端口所映射的公共端口
 38   ps                 #列出容器
 39   pull               #pull服务镜像
 40   push               #push服务镜像
 41   restart            #重启服务
 42   rm                 #删除所有(停止状态)的服务容器
 43   run                #在指定服务上指定一个命令
 44   scale              #设置服务的容器数量
 45   start              #启动服务
 46   stop               #停止服务
 47   top                #显示正在运行的进程
 48   unpause            #恢复处于暂停状态状态中的服务
 49   up                 #创建和启动容器
 50   version            #查看Docker-Compose的版本信息

提示:

-f参数为可选,也可使用-f提供多个配置文件,当使用多个文件时,Compose会将它们合并为一个配置。Compose按照提供文件的顺序构建配置。后续文件覆盖并添加到其前任文件中。

如果未在命令行上提供此标志,Compose将遍历工作目录及其父目录,以查找docker-compose.yml和docker-compose.override.yml文件。至少需要提供该docker-compose.yml文件。如果两个文件都存在于同一目录级别,则Compose会将这两个文件合并为一个配置。

docker-compose.override.yml文件中的配置能应用在构建中的值是除docker-compose.yml文件中的值之外。

也可使用相关环境变量指定Compose文件的路径。

环境变量相关资料参考《附005.Docker Compose环境变量说明》。

三 Docker Compose命令分解详解

3.1 build

格式:

代码语言:javascript
复制
  1 Usage: build [options] [--build-arg key=val...] [SERVICE...]
  2 Options:
  3     --compress              #使用gzip压缩构建上下文
  4     --force-rm              #总是移除中间容器
  5     --no-cache              #在构建映像时不要使用缓存
  6     --pull                  #总是尝试拉一个新版本的镜像
  7     -m, --memory MEM        #为构建容器设置内存限制
  8     --build-arg key=val     #为服务设置构建时变量

构建服务,并打上标记,默认为project_service。例如,composetest_db。如果Compose文件指定镜像名称,则使用该名称标记镜像。

若更改服务的Dockerfile或其构建目录的内容,可运行docker-compose build以重建它。

3.2 bundle

格式:

代码语言:javascript
复制
  1 Usage: bundle [options]
  2 Options:
  3     --push-images              #自动为所有服务在“构建”时推送镜像。
  4     -o, --output PATH          #将bundle文件写入的其他路径,默认为"<project name>.dab"

3.3 config

格式:

代码语言:javascript
复制
  1 Usage: config [options]
  2 Options:
  3     --resolve-image-digests  Pin image tags to digests.
  4     -q, --quiet              #只验证配置,不显示任何东西
  5     --services               #打印服务名称,每行一个
  6     --volumes                #打印卷名,每行一个

验证并查看Compose文件。

3.4 create

该命令已被弃用。

3.5 down

格式

代码语言:javascript
复制
  1 Usage: down [options]
  2 Options:
  3     --rmi type              #删除镜像,可选type如下:
  4 #“all”:删除任何服务使用的所有镜像。
  5 #“本地”:只删除不具有自定义tag标记的镜像
  6     -v, --volumes           #删除在Compose文件挂载的以及附加到容器的匿名卷
  7     --remove-orphans        #为没有在Compose文件中定义的服务删除容器
  8     -t, --timeout TIMEOUT   #指定关闭超时,默认为10秒

停止容器并删除由其创建的容器,网络,卷和镜像。

默认情况下,删除的内容为:

  • Compose文件中定义的服务的容器
  • 在Compose文件中networks部分中定义的网络
  • 默认网络(如果使用)

外部定义的网络和卷永远不会被删除。

3.6 events

格式:

代码语言:javascript
复制
  1 Usage: events [options] [SERVICE...]
  2 Options:
  3     --json     		 #使用该--json标志,每行打印一个json对象。

3.7 exec

格式:

代码语言:javascript
复制
  1 Usage: exec [options] [-e KEY=VAL...] SERVICE COMMAND [ARGS...]
  2 Options:
  3     -d, --detach	#在后台运行命令
  4     --privileged	#向进程提供扩展特权
  5     -u, --user USER	#运行该命令的用户
  6     -T			#禁用分配tty,默认docker-compose exec会分配一个tty
  7     --index=index	#如果有多个服务实例,则指定容器的索引,默认为1
  8     -e, --env KEY=VAL	#设置环境变量,可设置多次,不支持低于v1.25版本的API
  9     -w, --workdir DIR	#指定工作目录

3.8 images

格式:

代码语言:javascript
复制
  1 Usage: images [options] [SERVICE...]
  2 Options:
  3     -q, --quiet  	#仅显示ID

列出镜像

3.9 kill

代码语言:javascript
复制
  1 Usage: kill [options] [SERVICE...]
  2 
  3 Options:
  4 -s SIGNAL		#发送到容器的信号。默认信号是SIGKILL

通过发送SIGKILL信号强制运行容器停止。可选地,可以传递信号,例如:docker-compose kill -s SIGINT

3.10 logs

格式:

代码语言:javascript
复制
  1 Usage: logs [options] [SERVICE...]
  2 Options:
  3 --no-color          #生成单色输出
  4 -f, --follow        #跟踪日志输出
  5 -t, --timestamps    #显示时间戳
  6 --tail="all"        #为每个容器从日志的末尾显示的行数

显示服务的日志输出。

3.11 pause

格式:

代码语言:javascript
复制
  1 Usage: pause [SERVICE...]

暂停运行服务的容器。可使用docker-compose unpause来停止暂定。

3.12 port

格式:

代码语言:javascript
复制
  1 Usage: port [options] SERVICE PRIVATE_PORT
  2 Options:
  3 --protocol=proto  #tcp或udp,默认为tcp
  4 --index=index     #当一个服务拥有多个容器时,可通过该参数登陆到该服务下的任何服务

3.13 ps

格式:

代码语言:javascript
复制
  1 Usage: ps [options] [SERVICE...]
  2 Options:
  3 -q    		#仅列出容器id

列出容器

3.14 pull

格式:

代码语言:javascript
复制
  1 Usage: pull [options] [SERVICE...]
  2 Options:
  3     --ignore-pull-failures  #忽略pull失败的镜像,继续pull其他镜像.
  4     --parallel              #并行拉取多个镜像
  5     --no-parallel           #关闭并行拉取镜像
  6     -q, --quiet             #静默拉取,不显示进度信息
  7     --include-deps          #将服务声明为依赖项

拉取与docker-compose.yml或docker-stack.yml文件中定义的服务关联的镜像,但不会根据这些镜像启动容器。

3.15 push

格式:

代码语言:javascript
复制
  1 Usage: push [options] [SERVICE...]
  2 Options:
  3     --ignore-push-failures  ##忽略push失败的镜像,继续push其他镜像.

将服务图像推送到各自的服务registry/repository

3.16 restart

格式:

代码语言:javascript
复制
  1 Usage: restart [options] [SERVICE...]
  2 Options:
  3 -t, --timeout TIMEOUT      #指定关闭超时时间,单位为秒。(默认10秒)

重新启动所有已停止和正在运行的服务。

3.17 rm

格式:

代码语言:javascript
复制
  1 Usage: rm [options] [SERVICE...]
  2 Options:
  3     -f, --force   #不进行确认即删除
  4     -s, --stop    #在删除前停止容器
  5     -v            #删除任何与容器相关的匿名卷

删除已停止的服务容器。

默认情况下,不会删除附加到容器的匿名卷,可使用-v强制删除所有匿名卷。可使用ocker volume ls列出所有卷,任何不在卷中的数据都将丢失。

在没有任何选项的情况下,此命令也会运删除由docker-compose up或docker-compose run所创建的一次性容器。

3.18 run

格式:

代码语言:javascript
复制
  1 Usage:
  2     run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...]
  3         SERVICE [COMMAND] [ARGS...]
  4 
  5 Options:
  6     -d, --detach          #在后台运行命令
  7     --name NAME           #为容器指定一个名称
  8     --entrypoint CMD      #覆盖images中的CMD命令
  9     -e KEY=VAL            #设置一个环境变量,可使用多次
 10     -l, --label KEY=VAL   #添加或覆盖标签,可使用多次
 11     -u, --user=""         #作为指定的用户名或uid运行
 12     --no-deps             #不要启动链接服务
 13     --rm                  #在运行后删除容器,在-d后,即后端运行时被忽略
 14     -p, --publish=[]      #在主机声明一个容器端口
 15     --service-ports       #启用服务端口并映射主机
 16     --use-aliases         #容器链接的时候指定别名
 17     -v, --volume=[]       #绑定挂载一个卷
 18     -T                    #禁用分配tty,默认docker-compose exec会分配一个tty
 19     -w, --workdir=""      #指定容器工作目录

对服务运行一次性命令。例如,以下命令启动web服务运行bash命令。

docker-compose run web bash

提示:

通过的命令run会覆盖服务配置中定义的命令。例如,如果web启动了bash命令,则会覆盖服务配置文件中docker-compose run web python app.py,及容器行为为docker-compose run web bash。

通过的命令run不会创建服务配置中指定的任何端口。这可以防止端口与已打开的端口发生冲突。如果需要创建服务的端口并将其映射到主机,请指定--service-ports参数,如:

docker-compose run --service-ports web python manage.py shell

或者,可使用--publish或-p选项指定手动端口映射,类似docker run,如:

docker-compose run --publish 8080:80 -p 2022:22 -p 127.0.0.1:2021:21 web python manage.py shell

3.19 scale

格式:

代码语言:javascript
复制
  1 Usage: scale [SERVICE=NUM...]

注意:不推荐使用此命令。建议使用docker-compose up --scale替代。使用docker-compose scale中包含了up命令。

设置要为服务运行的容器数。

数字在表单中指定为参数service=num。例如:

docker-compose scale web=2 worker=3

3.20 start

格式:

代码语言:javascript
复制
  1 Usage: start [SERVICE...]

启动服务的现有容器。

3.21 stop

格式:

代码语言:javascript
复制
  1 Usage: stop [options] [SERVICE...]
  2 Options:
  3 -t, --timeout TIMEOUT      ##指定关闭超时,默认为10秒

停止运行容器而不删除它们。可使用docker-compose start再次启动。

3.21 top

格式:

代码语言:javascript
复制
  1 Usage: top [SERVICE...]

显示正在运行的进程。

3.22 unpause

格式:

代码语言:javascript
复制
  1 Usage: unpause [SERVICE...]

取消暂停服务的暂停容器

2.23 up

格式:

代码语言:javascript
复制
  1 Usage: up [options] [--scale SERVICE=NUM...] [SERVICE...]
  2 Options:
  3     -d, --detach               #在后台运行命令,不兼容--abort-on-container-exit
  4     --no-color                 #生成单色输出
  5     --quiet-pull               #不显示进度信息
  6     --no-deps                  #不要启动链接服务
  7     --force-recreate           #重新创建容器,即使它们的配置和镜像没有改变
  8     --always-recreate-deps     #创建容器的依赖,不兼容--no-recreate
  9     --no-recreate              #如果容器已经存在,就不要重新创建,不兼容--force-recreate 和-V.
 10     --no-build                 #不要建立一个镜像,即使不存在
 11     --build                    #在启动容器之前构建镜像
 12     --abort-on-container-exit  #存在任何容器停止,则停止创建所有容器,不兼容-d
 13     -t, --timeout TIMEOUT      #创建容器或启动容器的超时时间,默认10秒
 14     -V, --renew-anon-volumes   #重新创建匿名卷,而不是使用之前容器已经存在的卷
 15     --remove-orphans           #为在Compose file中未定义的服务移除容器
 16     --exit-code-from SERVICE   #返回所指定服务的退出码,不兼容--abort-on-container-exit.
 17     --scale SERVICE=NUM        #指定容器的规模(数量),会覆盖Compose file中定义的值。

构建,(重新)创建,启动和为服务附加容器。

除非它们已在运行,否则此命令也会启动任何链接服务。

该docker-compose up命令聚合每个容器的输出(基本上正在运行docker-compose logs -f)。退出命令后,所有容器都将停止。运行docker-compose up -d 在后台启动容器并使其运行。

如果服务的容器已经存在,并且在创建容器后更改了服务的配置或映像,则docker-compose up通过停止并重新创建容器(保留已安装的卷)来获取更改。要防止Compose获取更改,请使用该--no-recreate参数。

如果要强制Compose停止并重新创建所有容器,请使用该--force-recreate参数。

如果进程遇到错误,则此命令的退出代码为1。

如果使用SIGINT(ctrl+ C)或中断进程SIGTERM,则停止容器,则退出代码为0。

如果SIGINT或SIGTERM在这段停机阶段再次发送,运行容器被杀害,则退出代码为2。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-11-29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一 Docker Compose命令格式
  • 二 Docker Compose命令参数及解释
  • 三 Docker Compose命令分解详解
    • 3.1 build
      • 3.2 bundle
        • 3.3 config
          • 3.4 create
            • 3.5 down
              • 3.6 events
                • 3.7 exec
                  • 3.8 images
                    • 3.9 kill
                      • 3.10 logs
                        • 3.11 pause
                          • 3.12 port
                            • 3.13 ps
                              • 3.14 pull
                                • 3.15 push
                                  • 3.16 restart
                                    • 3.17 rm
                                      • 3.18 run
                                        • 3.19 scale
                                          • 3.20 start
                                            • 3.21 stop
                                              • 3.21 top
                                                • 3.22 unpause
                                                  • 2.23 up
                                                  相关产品与服务
                                                  容器服务
                                                  腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                                                  领券
                                                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档