2019-11-05 15:35:43 +00:00
# Compose 命令说明
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # 命令对象与格式
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
对于 Compose 来说 , 大部分命令的对象既可以是项目本身 , 也可以指定为项目中的服务或者容器 。 如果没有特别的说明 , 命令对象将是项目 , 这意味着项目中所有的服务都会受到命令影响 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
执行 ` docker-compose [COMMAND] --help ` 或者 ` docker-compose help [COMMAND] ` 可以查看具体某个命令的使用格式 。
2015-05-08 12:10:01 +00:00
2017-11-26 01:54:04 +00:00
` docker-compose ` 命令的基本的使用格式是
2016-12-20 07:35:52 +00:00
2017-11-23 07:48:52 +00:00
` ` ` bash
2016-12-20 07:35:52 +00:00
docker - compose [ - f = < arg > ... ] [ options ] [ COMMAND ] [ ARGS ... ]
2015-05-08 12:10:01 +00:00
` ` `
2019-11-05 15:35:43 +00:00
# # 命令选项
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
* ` -f, --file FILE ` 指定使用的 Compose 模板文件 , 默认为 ` docker-compose.yml ` , 可以多次指定 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -p, --project-name NAME ` 指定项目名称 , 默认将使用所在目录名称作为项目名 。
2017-11-23 07:48:52 +00:00
2015-05-08 12:10:01 +00:00
* ` --verbose ` 输出更多调试信息 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -v, --version ` 打印版本并退出 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # 命令使用说明
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` build `
2017-11-23 14:08:41 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose build [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
构建 ( 重新构建 ) 项目中的服务容器 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
服务容器一旦构建后 , 将会带上一个标记名 , 例如对于 web 项目中的一个 db 容器 , 可能是 web_db 。
2015-05-08 12:10:01 +00:00
可以随时在项目目录下运行 ` docker-compose build ` 来重新构建服务 。
2016-12-20 07:35:52 +00:00
选项包括 :
* ` --force-rm ` 删除构建过程中的临时容器 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-cache ` 构建镜像过程中不使用 cache ( 这将加长构建过程 ) 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --pull ` 始终尝试通过 pull 来获取更新版本的镜像 。
2019-11-05 15:35:43 +00:00
# # # ` config `
2017-11-23 14:08:41 +00:00
验证 Compose 文件格式是否正确 , 若正确则显示配置 , 若格式错误显示错误原因 。
2019-11-05 15:35:43 +00:00
# # # ` down `
2017-11-23 14:08:41 +00:00
此命令将会停止 ` up ` 命令所启动的容器 , 并移除网络
2019-11-05 15:35:43 +00:00
# # # ` exec `
2017-11-23 14:08:41 +00:00
进入指定的容器 。
2019-11-05 15:35:43 +00:00
# # # ` help `
2015-05-08 12:10:01 +00:00
获得一个命令的帮助 。
2019-11-05 15:35:43 +00:00
# # # ` images `
2017-11-23 14:08:41 +00:00
列出 Compose 文件中包含的镜像 。
2019-11-05 15:35:43 +00:00
# # # ` kill `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose kill [options] [SERVICE...] ` 。
通过发送 ` SIGKILL ` 信号来强制停止服务容器 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
支持通过 ` -s ` 参数来指定发送的信号 , 例如通过如下指令发送 ` SIGINT ` 信号 。
2017-11-23 07:48:52 +00:00
` ` ` bash
2015-05-08 12:10:01 +00:00
$ docker - compose kill - s SIGINT
` ` `
2019-11-05 15:35:43 +00:00
# # # ` logs `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose logs [options] [SERVICE...] ` 。
查看服务容器的输出 。 默认情况下 , docker - compose 将对不同的服务输出使用不同的颜色来区分 。 可以通过 ` --no-color ` 来关闭颜色 。
该命令在调试问题的时候十分有用 。
2019-11-05 15:35:43 +00:00
# # # ` pause `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose pause [SERVICE...] ` 。
暂停一个服务容器 。
2019-11-05 15:35:43 +00:00
# # # ` port `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose port [options] SERVICE PRIVATE_PORT ` 。
打印某个容器端口所映射的公共端口 。
选项 :
* ` --protocol=proto ` 指定端口协议 , tcp ( 默认值 ) 或者 udp 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --index=index ` 如果同一服务存在多个容器 , 指定命令对象容器的序号 ( 默认为 1 ) 。
2019-11-05 15:35:43 +00:00
# # # ` ps `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose ps [options] [SERVICE...] ` 。
列出项目中目前的所有容器 。
选项 :
2015-05-08 12:10:01 +00:00
2017-11-23 07:48:52 +00:00
* ` -q ` 只打印容器的 ID 信息 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` pull `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose pull [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
拉取服务依赖的镜像 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
选项 :
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
* ` --ignore-pull-failures ` 忽略拉取镜像过程中的错误 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` push `
2017-11-23 14:08:41 +00:00
2017-11-23 15:38:05 +00:00
推送服务依赖的镜像到 Docker 镜像仓库 。
2017-11-23 14:08:41 +00:00
2019-11-05 15:35:43 +00:00
# # # ` restart `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose restart [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
重启项目中的服务 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
选项 :
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
* ` -t, --timeout TIMEOUT ` 指定重启前停止容器的超时 ( 默认为 10 秒 ) 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` rm `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose rm [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
删除所有 ( 停止状态的 ) 服务容器 。 推荐先执行 ` docker-compose stop ` 命令来停止容器 。
选项 :
* ` -f, --force ` 强制直接删除 , 包括非停止状态的容器 。 一般尽量不要使用该选项 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -v ` 删除容器所挂载的数据卷 。
2019-11-05 15:35:43 +00:00
# # # ` run `
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose run [options] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...] ` 。
在指定服务上执行一个命令 。
2015-05-08 12:10:01 +00:00
例如 :
2017-11-23 07:48:52 +00:00
` ` ` bash
2015-05-08 12:10:01 +00:00
$ docker - compose run ubuntu ping docker . com
` ` `
2016-12-20 07:35:52 +00:00
将会启动一个 ubuntu 服务容器 , 并执行 ` ping docker.com ` 命令 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
默认情况下 , 如果存在关联 , 则所有关联的服务将会自动被启动 , 除非这些服务已经在运行中 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
该命令类似启动容器后运行指定的命令 , 相关卷 、 链接等等都将会按照配置自动创建 。
2015-05-08 12:10:01 +00:00
两个不同点 :
2016-12-20 07:35:52 +00:00
2015-05-08 12:10:01 +00:00
* 给定命令将会覆盖原有的自动运行命令 ;
2017-11-23 07:48:52 +00:00
2015-05-08 12:10:01 +00:00
* 不会自动创建端口 , 以避免冲突 。
如果不希望自动启动关联的容器 , 可以使用 ` --no-deps ` 选项 , 例如
2017-11-23 07:48:52 +00:00
` ` ` bash
2015-05-08 12:10:01 +00:00
$ docker - compose run -- no - deps web python manage . py shell
` ` `
将不会启动 web 容器所关联的其它容器 。
2016-12-20 07:35:52 +00:00
选项 :
* ` -d ` 后台运行容器 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --name NAME ` 为容器指定一个名字 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --entrypoint CMD ` 覆盖默认的容器启动指令 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -e KEY=VAL ` 设置环境变量值 , 可多次使用选项来设置多个环境变量 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -u, --user="" ` 指定运行容器的用户名或者 uid 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-deps ` 不自动启动关联的服务容器 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --rm ` 运行命令后自动删除容器 , ` d ` 模式下将忽略 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -p, --publish=[] ` 映射容器端口到本地主机 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --service-ports ` 配置服务端口并映射到本地主机 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -T ` 不分配伪 tty , 意味着依赖 tty 的指令将无法运行 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` scale `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose scale [options] [SERVICE=NUM...] ` 。
设置指定服务运行的容器个数 。
2015-05-08 12:10:01 +00:00
通过 ` service=num ` 的参数来设置数量 。 例如 :
2017-11-23 07:48:52 +00:00
` ` ` bash
2016-12-20 07:35:52 +00:00
$ docker - compose scale web = 3 db = 2
2015-05-08 12:10:01 +00:00
` ` `
2016-12-20 07:35:52 +00:00
将启动 3 个容器运行 web 服务 , 2 个容器运行 db 服务 。
一般的 , 当指定数目多于该服务当前实际运行容器 , 将新创建并启动容器 ; 反之 , 将停止容器 。
选项 :
* ` -t, --timeout TIMEOUT ` 停止容器时候的超时 ( 默认为 10 秒 ) 。
2019-11-05 15:35:43 +00:00
# # # ` start `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose start [SERVICE...] ` 。
启动已经存在的服务容器 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` stop `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose stop [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
停止已经处于运行状态的容器 , 但不删除它 。 通过 ` docker-compose start ` 可以再次启动这些容器 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
选项 :
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
* ` -t, --timeout TIMEOUT ` 停止容器时候的超时 ( 默认为 10 秒 ) 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` top `
2017-11-23 14:08:41 +00:00
查看各个服务容器内运行的进程 。
2019-11-05 15:35:43 +00:00
# # # ` unpause `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose unpause [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
恢复处于暂停状态中的服务 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` up `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose up [options] [SERVICE...] ` 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
该命令十分强大 , 它将尝试自动完成包括构建镜像 , ( 重新 ) 创建服务 , 启动服务 , 并关联服务相关容器的一系列操作 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
链接的服务都将会被自动启动 , 除非已经处于运行状态 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
可以说 , 大部分时候都可以直接通过该命令来启动一个项目 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
默认情况 , ` docker-compose up ` 启动的容器都在前台 , 控制台将会同时打印所有容器的输出信息 , 可以很方便进行调试 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
当通过 ` Ctrl-C ` 停止命令时 , 所有容器将会停止 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
如果使用 ` docker-compose up -d ` , 将会在后台启动并运行所有的容器 。 一般推荐生产环境下使用该选项 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
默认情况 , 如果服务容器已经存在 , ` docker-compose up ` 将会尝试停止容器 , 然后重新创建 ( 保持使用 ` volumes-from ` 挂载的卷 ) , 以保证新启动的服务匹配 ` docker-compose.yml ` 文件的最新内容 。 如果用户不希望容器被停止并重新创建 , 可以使用 ` docker-compose up --no-recreate ` 。 这样将只会启动处于停止状态的容器 , 而忽略已经运行的服务 。 如果用户只想重新部署某个服务 , 可以使用 ` docker-compose up --no-deps -d <SERVICE_NAME> ` 来重新创建服务并后台停止旧服务 , 启动新服务 , 并不会影响到其所依赖的服务 。
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
选项 :
2015-05-08 12:10:01 +00:00
2016-12-20 07:35:52 +00:00
* ` -d ` 在后台运行服务容器 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-color ` 不使用颜色来区分不同的服务的控制台输出 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-deps ` 不启动服务所链接的容器 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --force-recreate ` 强制重新创建容器 , 不能与 ` --no-recreate ` 同时使用 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-recreate ` 如果容器已经存在了 , 则不重新创建 , 不能与 ` --force-recreate ` 同时使用 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` --no-build ` 不自动构建缺失的服务镜像 。
2017-11-23 07:48:52 +00:00
2016-12-20 07:35:52 +00:00
* ` -t, --timeout TIMEOUT ` 停止容器时候的超时 ( 默认为 10 秒 ) 。
2015-05-08 12:10:01 +00:00
2019-11-05 15:35:43 +00:00
# # # ` version `
2019-09-01 06:46:33 +00:00
2016-12-20 07:35:52 +00:00
格式为 ` docker-compose version ` 。
2015-05-08 12:10:01 +00:00
2017-11-23 07:48:52 +00:00
打印版本信息 。
2019-09-01 06:46:33 +00:00
2019-11-05 15:35:43 +00:00
# # 参考资料
2019-09-01 06:46:33 +00:00
* [ 官方文档 ] ( https : //docs.docker.com/compose/reference/overview/)