命令参数


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

Rancher-Compose 命令

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

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

Rancher Compose 选项

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

NameDescription
—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
  1. version: '2'
  2. services:
  3. web:
  4. image: nginx
  5. db:
  6. image: mysql
  7. environment:
  8. MYSQL_ROOT_PASSWORD: test
样例文件 rancher-compose.yml
  1. # Reference the service that you want to extend
  2. version: '2'
  3. services:
  4. web:
  5. scale: 2
  6. db:
  7. scale: 1

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

  1. # Creating and starting services without environment variables and selecting a stack
  2. # If the stack does not exist in Rancher, it will be created in Rancher
  3. $ rancher-compose --url URL_of_Rancher --access-key <username_of_environment_api_key> --secret-key <password_of_environment_api_key> -p stack1 up
  4.  
  5. # Creating and starting services with environment variables already set
  6. $ rancher-compose -p stack1 up
  7.  
  8. # To change the scale of an existing service
  9. $ rancher-compose -p stack1 scale web=3
  10.  
  11. # To launch a specific service in the docker-compose.yml
  12. $ rancher-compose -p stack1 up web

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

使用 —env-file 选项

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

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

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

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

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

命令选项

up命令

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

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

  1. # If you do not use the -d flag, Rancher Compose will continue to run until you Ctrl+C to quit
  2. $ rancher-compose up
  3.  
  4. # Use the -d flag for rancher-compose to exit after running
  5. $ rancher-compose up -d

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

start命令

NameDescription
-d防止阻塞或输出日志

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

logs命令

NameDescription
—follow持续输出日志

restart命令

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

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

stop 与 scale

NameDescription
—timeout, -t "10"指定停止超时秒数
  1. # To change the scale of an existing service
  2. $ rancher-compose -p stack1 scale service1=3

rm 命令

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

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

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

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

pull 命令

NameDescription
—cached, -c只更新存在该镜像缓存的主机,不要拉取新的
  1. # Pulls new images for all services located in the docker-compose.yml file on ALL hosts in the environment
  2. $ rancher-compose pull
  3.  
  4. # Pulls new images for all services located in docker-compose.yml file on hosts that already have the image
  5. $ 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