Rancher Compose 工具的工作方式是跟 Docker Compose 的工作方式是相似的,并且支持版本V1的 docker-compose.yml 文件。为了启用 Rancher 的特性,你需要额外一份rancher-compose.yml文件,这份文件扩展并覆盖了docker-compose.yml文件。例如,服务缩放和健康检查这些特性就会在rancher-compose.yml中体现。

Rancher-Compose 命令

Rancher Compose 支持所有 Docker Compose 支持的命令。

Name Description
create 创建所有服务但不启动
up 启动所有服务
start 启动服务
logs 输出服务日志
restart 重启服务
stop, down 停止服务
scale 缩放服务
rm 删除服务
pull 拉取所有服务的镜像
upgrade 服务之间进行滚动升级
help, h 输出命令列表或者指定命令的帮助列表

Rancher Compose 选项

无论何时你使用 Rancher Compose 命令,这些不同的选项你都可以使用

Name Description
--verbose, --debug
--file, -f [–file option –file option] 指定一个compose 文件 (默认: docker-compose.yml) [$COMPOSE_FILE]
--project-name, -p 指定一个项目名称 (默认: directory name)
--url 执行 Rancher API接口 URL [$RANCHER_URL]
--access-key 指定 Rancher API access key [$RANCHER_ACCESS_KEY]
--secret-key 指定 Rancher API secret key [$RANCHER_SECRET_KEY]
--rancher-file, -r 指定一个 Rancher Compose 文件 (默认: rancher-compose.yml)
--env-file, -e 指定一个环境变量配置文件
--help, -h 输出帮助文本
--version, -v 输出 Rancher Compose 版本

例子

准备开始后,你需要创建一个 docker-compose.yml 文件和一个可选的 rancher-compose.yml 文件,如果没有 rancher-compose.yml 文件,那么所有服务默认只分配1个容器

样例文件 docker-compose.yml
version: '2'
services:
  web:
    image: nginx
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: test
样例文件 rancher-compose.yml
# Reference the service that you want to extend
version: '2'
services:
  web:
    scale: 2
  db:
    scale: 1

当你的这些文件创建好后,你就可以启动这些服务到 Rancher 服务了

# Creating and starting services without environment variables and selecting a stack
# If the stack does not exist in Rancher, it will be created in Rancher
$ rancher-compose --url URL_of_Rancher --access-key <username_of_environment_api_key> --secret-key <password_of_environment_api_key> -p stack1 up

# Creating and starting services with environment variables already set
$ rancher-compose -p stack1 up

# To change the scale of an existing service
$ rancher-compose -p stack1 scale web=3

# To launch a specific service in the docker-compose.yml
$ rancher-compose -p stack1 up web


注意: 如果你没有传入 -p <STACK_NAME>,应用名就是你执行Rancher Compose命令所在的文件夹名称。

使用 --env-file 选项

当你运行 Rancher Compose 命令时,可以使用--env-file 选项传入一个环境变量配置文件。

样例 secrets 文件
MYSQL_ROOT_PASSWORD=test
样例文件 docker-compose.yml
version: '2'
services:
  db:
    image: mysql
    environment:
    # Just like Docker Compose, if there is only a key, Rancher Compose will resolve to
    # the values on the machine or the file passed in using --env-file
      MYSQL_ROOT_PASSWORD:

你可以启动服务时传入 secrets 文件

$ rancher-compose --env-file secrets up -d

在传入一个文件并一个环境变量只含一个key,Rancher Compose 将从这个文件或者从运行 Rancher Compose 命令的机器中的系统环境变量中提取这个值。当在文件和系统环境变量中同时存在同一个变量时,Rancher Compose 使用文件中的值。

命令选项

up命令

Name Description
--pull, -p 升级前先在各个已有这个镜像的主机拉取最新镜像
-d 不要阻塞或输出日志
--upgrade, -u, --recreate 当服务改变时升级
--force-upgrade, --force-recreate 强制升级服务,不管服务是否改变
--confirm-upgrade, -c 确认升级成功并删除老容器
--rollback, -r 回滚到上一个已部署的版本
--batch-size "2" 每次升级多少个容器
--interval "1000" 升级间隔


当你运行 Rancher Compose 的 up 命令时,在所有任务完成后进程会继续运行。如果你希望任务完成后进程退出,那么你需要传入 -d 选项,防止阻塞和输出日志。

# If you do not use the -d flag, Rancher Compose will continue to run until you Ctrl+C to quit
$ rancher-compose up

# Use the -d flag for rancher-compose to exit after running
$ rancher-compose up -d

阅读更多关于 利用Rancher Compose升级服务.

start命令

Name Description
-d 防止阻塞或输出日志


 如果你希望任务完成后进程退出,那么你需要传入 -d 选项,防止阻塞和输出日志。

logs命令

Name Description
--follow 持续输出日志

restart命令

Name Description
--batch-size "1" 每次重启多少个容器
--interval "0" 重启间隔


缺省情况下,Rancher Compose 会顺序地逐个重启服务。你可以设置批量大小和重启间隔。

stop 与 scale

Name Description
--timeout, -t "10" 指定停止超时秒数


# To change the scale of an existing service
$ rancher-compose -p stack1 scale service1=3

rm 命令

Name Description
--force, -f 允许删除所有服务
-v 同时移除关联的容易


当移除服务时,Rancher Compose 仅移除在 docker-compose.yml 文件中出现的服务。如果有其他的服务在Rancher 的 stack 里,他们不会被移除,因为 Rancher Compose 不知道他们的存在。

所以 stack 不会被移除,因为 Rancher Compose 不知道stack 里是否还有其他容器。

缺省情况下,附加到容器的卷不会被移除。你可以通过 docker volume ls 查看所有的卷。

pull 命令

Name Description
--cached, -c 只更新存在该镜像缓存的主机,不要拉取新的


# Pulls new images for all services located in the docker-compose.yml file on ALL hosts in the environment
$ rancher-compose pull

# Pulls new images for all services located in docker-compose.yml file on hosts that already have the image
$ rancher-compose pull --cached


注意: 不同于 docker-compose pull, 你不可以指定拉取哪些服务的镜像,Rancher Compose 会拉取所有在 docker-compose.yml 里的服务镜像。

upgrade 命令

你可以使用 Rancher Compose 升级在 Rancher 里的服务。请阅读更多关于在何时和怎样更新你的服务.

删除服务/容器

默认情况下,Rancher Compose 不会删除任何东西。 这意味着如果你在一行里有两个 up 命令,第二个 up 是不会做任何事情的。这是因为第一个 up 会创建所有东西并保持运行。甚至你没有传 -dup,Rancher Compose 也不会删除你的服务。要删除服务,你只能使用 rm