前言

本文主要学习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 的版本号。


点赞 收藏 关注

【云原生|Docker系列6】Docker Compose的命令使用详解相关推荐

  1. 重磅发布|新一代云原生数据仓库AnalyticDB「SQL智能诊断」功能详解

    简介:AnalyticDB For MySQL为用户提供了高效.实时.功能丰富并且智能化的「SQL智能诊断」和「SQL智能调优」功能,提供用户SQL性能调优的思路.方向和具体的方法,降低用户使用成本, ...

  2. SELinux系列(十七)—awk命令使用详解

    Awk一次对一条记录进行操作,直到到达输入的末尾.记录由一个称为记录分隔符的字符分隔.默认的记录分隔符是换行符,这意味着文本数据中的每一行都是一个记录. 每条记录中的字段由$后跟字段号(以1开头)引用 ...

  3. 【Docker系列】Docker Compose 服务依赖和健康检查

    准备 不想再写一遍了,请看上篇文章的文件准备:[Docker系列]Docker Compose 环境变量 服务依赖 docker-compose.yml 添加depends_on参数 启动顺序: re ...

  4. 云计算与云原生技术系列文章

    目录 文章目录 目录 云计算 云原生 云原生思想 容器技术 Docker containerd Kata Container APIGW ETCD 服务治理 - Service Mesh FaaS O ...

  5. 【云原生Kubernetes系列第五篇】kubeadm v1.20 部署K8S 集群架构(人生这道选择题,总会有遗憾)

    系列文章目录 ??即日起,更新云原生相关知识,喜欢的小伙伴可以给我点个三连喔 ??收录至专栏 云原生 ??[云原生Docker系列第一篇]Docker镜像管理 ??[云原生Docker系列第二篇]Do ...

  6. 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装

    云原生|K8s系列第1篇目录 1.先从K8s不是什么讲起 2.K8s是什么及核心基础概念 2.1 Container容器 2.2 Pod 2.3 Node 2.4 Label 2.5 Annotati ...

  7. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

  8. Docker系列 七. Docker 安装Jenkins

    Docker系列 七. Docker 安装Jenkins Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集 ...

  9. 云原生存储系列文章(一):云原生应用的基石

    作者| 郡宝 阿里云技术专家 参与文末留言互动,即有机会获得赠书福利! 导读:存储服务支撑了应用的状态.数据的持久化,是计算机系统中的重要组成部分,也是所有应用得以运行的基础,其重要性不言而喻.在存储 ...

最新文章

  1. PMcaff每日推荐5本--产品经理必读的互联网专业书籍
  2. 爬虫521错误(又是一次和可爱的前端vs的故事)
  3. 基于阿里云物联网平台,我们这样实现简易出入监控
  4. 【奇技淫巧】在安卓模拟器中安装busybox
  5. SQL 删除重复记录,并保留其中一条
  6. 104协议服务器端,104规约详解.doc
  7. java生成随机邮箱_Java随机密码生成并和邮箱、手机号匹配
  8. 如何使用 CSS 设置 HTML 表格样式
  9. 51.php-fpm的pool 慢日志 open_basedir 进程管理
  10. 华为签约计算机大学,2020年,华为签约学生多的16所大学,你知道几个?
  11. windows彻底永久关闭自动更新的方式
  12. Python之旅——函数初步
  13. CH340下载程序时DTR和RTS的电平变化分析
  14. 零售业100个创意促销方案
  15. vs2008编译QT开源项目--太阳神三国杀源码分析(四) 动画
  16. 我们在讲的 Database Plus,到底能解决什么样的问题?
  17. java播放mp3格式音频文件
  18. uv棋盘格4096_建模大佬们都在用的快速高效展UV的方法,还不来GET一下么?
  19. java实现二叉堆,数据结构基础篇-二叉堆
  20. Android整点报时

热门文章

  1. EM4001射频模块读卡
  2. Android权限 - 权限分类
  3. 开发微信小程序入门教程,含破解工具
  4. 1.无线通信:传播和衰落
  5. 怎么编译Linux内核?
  6. android 从顶部弹出的SnackBar
  7. 通过xshell命令方式下载文件
  8. HTML登陆界面编程代码
  9. android assets大小限制200m,使用 AssetsManager 解决微信小游戏包体积尺寸限制问题
  10. 几个实际工作中测出来的web安全漏洞