阿里容器服务-编排模板语法简介
阿里容器服务-编排模板语法简介
容器服务支持Docker Compose编排模板来描述多容器应用。
作用:
用于描述一个完整的应用,该应用可由好多个服务组成。例如一个web,他是由nginx/httpd+php+mysql组成。甚至可以根据服务量启动两个甚至更多的容器。
能力:
容器服务支持通过编排模板文件,自动化地部署和管理一个容器应用。
编排模板文件使用的标签兼容大部分 Docker Compose 1.5.x 到 1.7.x 版本实现的标签。有关具体兼容的标签,参见 标签说明。
编排模板文件也支持 Compose V1 和 V2 两种不同版本的模板格式。更多详细信息,参见 文档。
容器服务也在社区版本之上提供了很多扩展能力:
与社区的 Docker Compose 和 Swarm 不同,阿里云容器服务支持跨节点的容器连接(link),所以您可以直接将 Docker Compose 模板描述的应用部署到分布式集群上来提供高可用性和可伸缩性。
容器服务也在社区 Compose 模板描述的基础上提供了一系列扩展来简化 Web、微服务应用的部署和运维。这就是容器里的标签
直接从一个例子看
wordpress:
image: registry.aliyuncs.com/acs-sample/wordpress:yunqi
#代表这个服务的镜像
ports:
- 80
#代表容器会暴露80端口
volumes:
- /acs/log/wordpress/:/var/log/
#这里将容器内的目录/var/log/,映射到宿主机的/acs/log/wordpress/目录。(可供日志服务去采集)
labels:
#docker的标准能力 容器服务也提供了一些增值的能力(以aliyun开头的标签)
aliyun.routing.port_80: wordpress
#代表提供了路由能力,前端的域名是wordpress.<cluster_id>.<region_id>.alicontainer.com,并绑定到容器的端口8080
aliyun.probe.url: 'http://container/license.txt'
#代表了该镜像起来后的健康型检查URL是容器的内部地址:http://localhost/license.txt
aliyun.probe.initial_delay_seconds: '5'
#代表了在容器启动后延迟几秒开始健康检查
aliyun.scale: '1'
#代表了该镜像需要启动1个容器
aliyun.depends: logtail
#代表这个容器会等logtail启动之后再启动
aliyun.latest_image: true
#代表会拉取最新的镜像(对于tag不变而内容变化的镜像)
restart: always
#代表容器挂了会自动重启
links:
- mysql
#代表wordpress这个服务会连接到mysql,可以通过环境变量mysql.MYSQL_ROOT_PASSWORD获取密码
mysql:
image: mysql
ports:
- 80
labels:
aliyun.scale: "1"
environment:
- MYSQL_ROOT_PASSWORD=password
阿里容器服务-标签
probe
作用:
用于检查服务的健康情况 。
方法:
- 通过URL进行检查,支持http/tcp协议
- 通过shell脚本检查。
rolling_updates
作用:
在更新某个服务时,只要scale标签定义大于1时,以最小化停止服务时间来更新容器。
parallelism
作用:
设置每次并行更新的容器数量。要与上面的参数配合使用。
depends
作用:设置服务的依赖关系。多个依赖使用逗号分隔。
scale
作用:设置容器数量。
routing
作用:设置该服务的域名
格式:
aliyun.routing.port_$container_port: [http://]$domain|$domain_prefix[:$context_path]
- $container_port: 容器端口,注意 该处不是主机的端口
- $domain: 域名,需要用户填写自己的域名
- $domain_prefix: 域名前缀,如果填写域名前缀,容器服务会提供给您一个测试用的域名,域名后缀是wordpress.<cluster_id>.<region_id>.alicontainer.com
- $context_path: 请求的路径,即可以根据请求的路径来选择区分不同的后端容器
例子
web:
image: wordpress:4.2
links:
- db:mysql
labels:
aliyun.routing.port_80: wordpress;http://wp.sample.com/context
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=password
routing.session_sticky=(true|false)
作用:设置会话保持,即在请求路由时,在一段时间来,会把同一个session指定到同一个后端容器。而不是随机或根据什么算法。
global
作用:设置该服务为全局服务。这种服务器需要部署到每一个节点上,例如一些监控服务。
服务部署约束affinity:service
作用:用来约束服务之间的亲和度,其实说白了多用于把从服务如mysql slave安装在与master不同的节点上。不然,一个节点挂了,从库也会挂掉。
例子参考
master:
image: mysql:5.6
environment:
- MYSQL_USER=user
- MYSQL_PASS=test
- REPLICATION_MASTER=true
- REPLICATION_USER=repl
- REPLICATION_PASS=repl
ports:
- 3306
slave:
image: mysql:5.6
environment:
- MYSQL_USER=user
- MYSQL_PASS=test
- REPLICATION_SLAVE=true
- affinity:service!=master
ports:
- 3306
links:
- master:mysql
external
作用:设置该服务直接链接到外部地址。
通过 external,描述一个并没有部署在集群中的 RDS 服务,并提供给部署在集群中的 WordPress 使用。
wordpress:
image: wordpress:4.2
ports:
- 80
links:
- db:mysql
environment:
- WORDPRESS_DB_USER=cloud
- WORDPRESS_DB_PASSWORD=MYPASSWORD
- WORDPRESS_DB_NAME=wordpress
db:
external:
host: rdsxxxx.mysql.rds.aliyuncs.com
ports:
- 3306
变量替换
在模板里可以使用变量。

浙公网安备 33010602011771号