阿里容器服务-编排模板语法简介

阿里容器服务-编排模板语法简介

容器服务支持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
复制代码


变量替换

在模板里可以使用变量。

 
 

转载于:https://www.cnblogs.com/flying1819/articles/9032507.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值