命令参数
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
会创建所有东西并保持运行。甚至您没有传 -d
给 up
,Rancher Compose 也不会删除您的服务。要删除服务,您只能使用 rm
。