Compose 命令说明

1)命令对象与格式

对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中 的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有 的服务都会受到命令影响。

userdeMBP:compose-haproxy-web user$ docker-compose --help
...
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml) 指定使用的 Compose 模板文件,默认为docker-compose.yml,可以多次指定
-p, --project-name NAME Specify an alternate project name(default: directory name)指定项目名称,默认将使用所在目录名称作为项目名
--verbose Show more output 输出更多调试信息
--log-level LEVEL Set log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) 设置日志级别
--no-ansi Do not print ANSI control characters 不输出ANSI控制字符
-v, --version Print version and exit 打印版本并退出
-H, --host HOST Daemon socket to connect to Daemon socket连接的主机
--x-networking 使用Docker的可拔插网络后段特性(需要Docker1.9及以后版本)
--x-network-driver DRIVER指定网络后端的驱动,默认为bridge(需要Docker1.9及以后版本)

格式:

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

2)命令使用说明

1> build

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

构建(重新构建)项目中的服务容器

服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容 器,可能是 web_db。

可以随时在项目目录下运行docker-compose build来重新构建服务

Options:
--compress Compress the build context using gzip. 使用gzip压缩构建上下文
--force-rm Always remove intermediate containers. 删除构建过程中的临时容器
--no-cache Do not use cache when building the image. 构建镜像过程中不使用 cache(这将加长构建过程)
--pull Always attempt to pull a newer version of the image. 始终尝试通过 pull 来获取更新版本的镜像
-m, --memory MEM Sets memory limit for the build container. 为构建容器设置内存限制
--build-arg key=val Set build-time variables for services. 为服务设置构建时间变量
--parallel Build images in parallel. 并行构建镜像

2> help

获得一个命令的帮助

3> kill

格式及选项:

Usages : docker-compose kill [options] [SERVICE...]
Options:
-s SIGNAL SIGNAL to send to the container.Default signal is SIGKILL.指定发送的信号,默认发送 SIGKILL 信号来强制停止服务容器

4> logs

格式及选项

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

Options:
--no-color Produce monochrome output.关闭颜色
-f, --follow Follow log output. 跟踪日志输出
-t, --timestamps Show timestamps. 展示时间戳
--tail="all" Number of lines to show from the end of the logs for each container.展示每个容器日志结尾的行数

查看服务容器的输出。默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。

可以通过--no-color来关闭颜色。该命令在调试问题的时候十分有用。

5> pause

格式:

Usage: docker-compose pause [SERVICE...]

暂停一个服务容器

6> port

格式及选项:

Usage: docker-compose port [options] SERVICE PRIVATE_PORT

Options:
--protocol=proto tcp or udp [default: tcp] 指定端口协议,tcp(默认值)或者 udp
--index=index index of the container if there are multiple instances of a service [default: ]如果同一服务存在多个容器,指定命令对象容器的序号(默认为1)

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

 

7> ps

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

Options:
-q, --quiet Only display IDs 只打印容器的 ID 信息
--services Display services 显示服务
--filter KEY=VAL Filter services by a property 通过属性过滤服务

8> pull

格式和选项:

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

Options:
--ignore-pull-failures Pull what it can and ignores images with pull failures. 忽略拉取镜像过程中的错误
--parallel Deprecated, pull multiple images in parallel (enabled by default). 弃用,并行拉取多个镜像(默认可用)
--no-parallel Disable parallel pulling. 不可并行拉取
-q, --quiet Pull without printing progress information 没有打印进程信息的拉取
--include-deps Also pull services declared as dependencies 也拉取声称为依赖的服务

9> restart

格式和选项:

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

Options:
-t, --timeout TIMEOUT Specify a shutdown timeout in seconds.(default: )指定重启前停止容器的超时(默认为 秒)

10> rm

格式和选项:

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

Options:
-f, --force Don't ask to confirm removal 强制直接删除,包括非停止状态的容器。一般尽量不要使用该选项
-s, --stop Stop the containers, if required, before removing 如果需要,在移除前先停止该容器
-v Remove any anonymous volumes attached to containers 删除容器所挂载的数据卷
-a, --all Deprecated - no effect. 弃用-没有影响

11> run

格式和选项:

Usage:
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] [-l KEY=VALUE...] SERVICE [COMMAND] [ARGS...] Options:
-d, --detach Detached mode: Run container in the background, print new container name. 分离模式:后台运行容器,打印新容器名
--name NAME Assign a name to the container 为容器指定一个名字
--entrypoint CMD Override the entrypoint of the image.覆盖默认的容器启动指令
-e KEY=VAL Set an environment variable (can be used multiple times) 设置环境变量值,可多次使用选项来设置多个环境变量
-l, --label KEY=VAL Add or override a label (can be used multiple times) 添加或覆写标签,可多次使用
-u, --user="" Run as specified username or uid 指定运行容器的用户名或者 uid
--no-deps Don't start linked services. 不自动启动关联的服务容器
--rm Remove container after run. Ignored in detached mode. 运行命令后自动删除容器, -d模式下将忽略
-p, --publish=[] Publish a container's port(s) to the host 映射容器端口到本地主机
--service-ports Run command with the service's ports enabled and mapped to the host. 配置服务端口并映射到本地主机
--use-aliases Use the service's network aliases in the network(s) the container connects to. 在容器连接的网络中使用服务网络的别名
-v, --volume=[] Bind mount a volume (default []) 连接挂载数据卷,默认为[]
-T Disable pseudo-tty allocation. By default `docker-compose run` allocates a TTY. 不分配伪 tty,意味着依赖 tty 的指令将无法运行
-w, --workdir="" Working directory inside the container 在容器中的运行目录

这里run的service一定是之前docker-compose up命令开启的容器中的一种

在指定服务上执行一个命令,比如:

userdeMacBook-Pro:compose-haproxy-web user$ docker-compose run weba env
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=db02a3babdb3
TERM=xterm
COMPOSE_HAPROXY_WEB_WEBA_1_PORT=tcp://172.17.0.4:80
COMPOSE_HAPROXY_WEB_WEBA_1_PORT_80_TCP=tcp://172.17.0.4:80
COMPOSE_HAPROXY_WEB_WEBA_1_PORT_80_TCP_ADDR=172.17.0.4
COMPOSE_HAPROXY_WEB_WEBA_1_PORT_80_TCP_PORT=
COMPOSE_HAPROXY_WEB_WEBA_1_PORT_80_TCP_PROTO=tcp
COMPOSE_HAPROXY_WEB_WEBA_1_NAME=/compose-haproxy-web_weba_run_e5f54aba4fd5/compose-haproxy-web_weba_1
COMPOSE_HAPROXY_WEB_WEBA_1_ENV_LANG=C.UTF-
COMPOSE_HAPROXY_WEB_WEBA_1_ENV_PYTHONIOENCODING=UTF-
COMPOSE_HAPROXY_WEB_WEBA_1_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
COMPOSE_HAPROXY_WEB_WEBA_1_ENV_PYTHON_VERSION=2.7.
COMPOSE_HAPROXY_WEB_WEBA_1_ENV_PYTHON_PIP_VERSION=18.1
WEBA_PORT=tcp://172.17.0.4:80
WEBA_PORT_80_TCP=tcp://172.17.0.4:80
WEBA_PORT_80_TCP_ADDR=172.17.0.4
WEBA_PORT_80_TCP_PORT=
WEBA_PORT_80_TCP_PROTO=tcp
WEBA_NAME=/compose-haproxy-web_weba_run_e5f54aba4fd5/weba
WEBA_ENV_LANG=C.UTF-
WEBA_ENV_PYTHONIOENCODING=UTF-
WEBA_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
WEBA_ENV_PYTHON_VERSION=2.7.
WEBA_ENV_PYTHON_PIP_VERSION=18.1
WEBA_1_PORT=tcp://172.17.0.4:80
WEBA_1_PORT_80_TCP=tcp://172.17.0.4:80
WEBA_1_PORT_80_TCP_ADDR=172.17.0.4
WEBA_1_PORT_80_TCP_PORT=
WEBA_1_PORT_80_TCP_PROTO=tcp
WEBA_1_NAME=/compose-haproxy-web_weba_run_e5f54aba4fd5/weba_1
WEBA_1_ENV_LANG=C.UTF-
WEBA_1_ENV_PYTHONIOENCODING=UTF-
WEBA_1_ENV_GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
WEBA_1_ENV_PYTHON_VERSION=2.7.
WEBA_1_ENV_PYTHON_PIP_VERSION=18.1
LANG=C.UTF-
PYTHONIOENCODING=UTF-
GPG_KEY=C01E1CAD5EA2C4F0B8E3571504C367C218ADD4FF
PYTHON_VERSION=2.7.
PYTHON_PIP_VERSION=18.1
HOME=/root

将会启动一个 web 服务容器,并执行命令。 默认情况下,如果存在关联,则所有关联的服务将会自动被启动,除非这些服务已经在运行中。

该命令类似启动容器后运行指定的命令,相关卷、链接等等都将会按照配置自动创建。

两个不同点:

  • 给定命令将会覆盖原有的自动运行命令;
  • 不会自动创建端口,以避免冲突。

如果不希望自动启动关联的容器,可以使用 --no-deps选项,例如

$ docker-compose run --no-deps web python manage.py shell

将不会启动 web 容器所关联的其它容器。

12> scale

格式及选项:

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

Options:
-t, --timeout TIMEOUT Specify a shutdown timeout in seconds.(default: )指定重启前停止容器的超时(默认为 秒)

设置指定服务运行的容器个数。

通过 SERVICE=NUM的参数来设置数量。例如:

 $ docker-compose scale web= db=

将启动 3 个容器运行 web 服务,2 个容器运行 db 服务。

一般的,当指定数目多于该服务当前实际运行容器,将新创建并启动容器;反之,将停止容器。

13> start

格式:

docker-compose start [SERVICE...]

启动已经存在的服务容器

14> stop

格式及选项:

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

Options:
-t, --timeout TIMEOUT Specify a shutdown timeout in seconds.(default: )指定重启前停止容器的超时(默认为 秒)

停止已经处于运行状态的容器,但不删除它。通过 docker-compose start可以再次启动这些容器。

15> unpause

格式:

Usage: docker-compose unpause [SERVICE...]

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

16> up

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

Options:
-d, --detach Detached mode: Run containers in the background,print new container names. Incompatible with --abort-on-container-exit. 分离模式:在后台运行服务容器,打印新容器名。不与--abort-on-container-exit兼容
--no-color Produce monochrome output. 不使用颜色来区分不同的服务的控制台输出
--quiet-pull Pull without printing progress information 不带打印过程信息地拉取
--no-deps Don't start linked services. 不启动服务所链接的容器
--force-recreate Recreate containers even if their configuration and image haven't changed. 即使他们的配置和镜像没有改变,也强制重新创建容器,不能与--no-recreate连用
--always-recreate-deps Recreate dependent containers.Incompatible with --no-recreate. 重新创建依赖镜像,不能与--no-recreate连用
--no-recreate If containers already exist, don't recreate them. Incompatible with --force-recreate and -V. 如果容器已经存在了,则不重新创建,不能与--force-recreate连用
--no-build Don't build an image, even if it's missing. 不再构建镜像,即使丢失
--no-start Don't start the services after creating them. 在创建后不再开启服务
--build Build images before starting containers. 在开启容器时构建镜像
--abort-on-container-exit Stops all containers if any container was stopped. Incompatible with -d. 如果有任意容器停止了,就停止所有的容器。与-d参数不连用
-t, --timeout TIMEOUT Use this timeout in seconds for container shutdown when attached or when containers are already running. (default: ) 当连接容器或容器已经运行时或停止容器时候的超时(默认为 秒)
-V, --renew-anon-volumes Recreate anonymous volumes instead of retrieving data from the previous containers.重新创建匿名数据卷来替代从以前的容器中检索数据
--remove-orphans Remove containers for services not defined in the Compose file. 移除Compose文件中的服务没有定义的容器
--exit-code-from SERVICE Return the exit code of the selected service container. Implies --abort-on-container-exit. 运行已选服务容器的exit代码,同时实现--abort-on-container-exit参数功能
--scale SERVICE=NUM Scale SERVICE to NUM instances. Overrides the `scale` setting in the Compose file if present. 将服务扩展到NUM个实例。覆盖Compose文件中存在的`scale`设置

该命令十分强大,它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作。

链接的服务都将会被自动启动,除非已经处于运行状态

可以说,大部分时候都可以直接通过该命令来启动一个项目

默认情况,如果服务容器已经存在, docker-compose up将会尝试停止容器, 然后重新创建(保持使用 volumes-from挂载的卷),以保证新启动的服务匹配docker-compose.yml文件的最新内容

如果用户不希望容器被停止并重新创建,可以使用--no-recreate参数 。这样将只会启动处于停止状态的容器,而忽略已经运行的服务。

如果用户只想重新部署某个服务,可以使用 docker-compose up --no-deps -d <SERVICE_NAME>来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务

17> migrate-to-labels(现在好像已经没有这个功能了)

重新创建容器,并添加 label。
主要用于升级 1.2 及更早版本中创建的容器,添加缺失的容器标签。
实际上,最

Docker技术入门与实战 第二版-学习笔记-9-Docker Compose 项目-2-Compose 命令说明的更多相关文章

  1. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-2-driver

    1>使用的driver 1〉generic 使用带有SSH的现有VM/主机创建机器. 如果你使用的是机器不直接支持的provider,或者希望导入现有主机以允许Docker Machine进行管 ...

  2. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥

    1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...

  3. Docker技术入门与实战 第二版-学习笔记-10-Docker Machine 项目-1-cli

    Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境 Docker Machine是一种工具,它允许你在虚拟主机 ...

  4. Docker技术入门与实战 第二版-学习笔记-7-数据管理(volume)

    Docker 数据管理 为什么要进行数据管理呢?因为当我们在使用container时,可能会在里面创建一些数据或文件,但是当我们停掉或删除这个容器时,这些数据或文件也会同样被删除,这是我们并不想看见的 ...

  5. Docker技术入门与实战 第二版-学习笔记-5-容器-命令及限制内存与cpu资源

    1.启动容器 启动容器有两种方式: 基于镜像新建一个容器并启动 将在终止状态(stopped)的容器重新启动 1)新建并启动——docker run 比如在启动ubuntu:14.04容器,并输出“H ...

  6. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  7. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-1-单个host上的容器网络

    Docker 中的网络功能介绍 Docker 允许通过外部访问容器或容器互联的方式来提供网络服务 1) 外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -p或 -P参数 ...

  8. Docker技术入门与实战 第二版-学习笔记-6-仓库

    仓库(Repository)是集中存放镜像的地方 一个容易混淆的概念是注册服务器(Registry). 实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像. ...

  9. Docker技术入门与实战 第二版-学习笔记-2-镜像构建

    3.利用 commit 理解镜像构成 在之前的例子中,我们所使用的都是来自于 Docker Hub 的镜像. 直接使用这些镜像是可以满足一定的需求,而当这些镜像无法直接满足需求时,我们就需要定制这些镜 ...

  10. Docker技术入门与实战 第二版-学习笔记-8-网络功能network-2-相应配置

    1) 快速配置指南(详细使用下面会讲) 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效 下面2个命令选项既可以在启动服务时指定,也可以 Docker 容器启动(dock ...

随机推荐

  1. 星系炸弹-2015省赛C语言A组第二题

    星系炸弹 在X星系的广袤空间中漂浮着许多X星人造“炸弹”,用来作为宇宙中的路标.每个炸弹都可以设定多少天之后爆炸.比如:阿尔法炸弹2015年1月1日放置,定时为15天,则它在2015年1月16日爆炸. ...

  2. python正则表达式3-模式匹配

    re.S,使 '.'  匹配换行在内的所有字符 >>> pattern=r'ghostwu.com' >>> import re >>> re.f ...

  3. JavaScript--DOM操作表格及样式(21)

    一 操作表格 // <table>标签是HTML中结构最为复杂的一个,我们可以通过DOM来创建生成它,或者HTMLDOM来操作它; // 使用DOM来创建表格; var table = d ...

  4. django-全文检索

    全文检索不同于特定字段的模糊查询,使用全文检索的效率更高,并且能够对于中文进行分词处理 需要的第三方库: haystack:django的一个包,可以方便地对model里面的内容进行索引.搜索,设计为 ...

  5. JavaScript高级编程———基本包装类型String和单体内置对象Math

    JavaScript高级编程———基本包装类型和单体内置对象 <script> var stringObject = new String("hello world") ...

  6. element-ui Progress、Badge、Alert组件源码分析整理笔记(四)

    Progress进度条组件 <template> <!--最外层--> <div class="el-progress" :class="[ ...

  7. ajax的type为get的时候报405错误,改成post就OK,这是为什么?老师写的get可以请求成功,我的就不行,附图

    报错: 我是在慕课跟着老师敲的,老师那边get可以请求成功,但是我这个地方type只能是post才请求成功,get就报405,不理解是为什么?

  8. Excel indirect引用其它xlsx文件内容作为下拉框

    效果如下图: 在第一个excel文件中有一个下拉框 这里面的选项,需要从另外一个Excel文件中读取内容,另外一个Excel文件如下: 实现的步骤如下: 1.新建一个Excel文件select.xls ...

  9. CentOS7添加入windows2008的AD域

    采用域控对用户权限进行限制的时候,经常会出现需要将linux加入windows域,毕竟windows的AD域超级强大.用户名可以由windows进行统一管理,方便办公使用.下面简单介绍如何进行配置. ...

  10. 基于纤程(Fiber)实现C++异步编程库(一):原理及示例

    纤程(Fiber)和协程(coroutine)是差不多的概念,也叫做用户级线程或者轻线程之类的.Windows系统提供了一组API用户创建和使用纤程,本文中的库就是基于这组API实现的,所以无法跨平台 ...