【每天学一点】docker-compose中的deploy
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【每天学一点】docker-compose中的deploy相关的知识,希望对你有一定的参考价值。
参考技术A由于要进行服务的微服务化部署,由于硬件限制,我们目前采用的是Swarm作为容器编排的工具。对应于k8s中的pod,swarm中有dab这种概念,即分布式应用包,目前还没有去探索这个的使用,由于还是实验性的特性,目前还不涉及,这里主要还是通过docker-compose.yaml的方式将多个微服务统一运维。
使用的是 docker stack deploy <args> 命令进行的部署。
官网上该命令有如下的参数:
由于使用的是docker-compose文件,这里直接通过 compose-file 进行部署即可,例如官网的例子
甚至可以通过叠加compose文件,来修改前一个文件中的配置
那么再来看看其他的可选命令:
namespace 和 kubeconfig 是k8s的专属命令,这里就不做过多解释,直接看swarm相关的。
目前觉得 prune 这个参数比较关键,可以把一些down掉的service进行自动清理。
如何通过 docker-compose.yml 配置文件进行集群化部署呢?
首先需要知道的,docker-compose文件中哪个部分主要对应了swarm中的运维需求,答案就是 deploy 参数下的各种配置。
上图中的配置一个个来看;
首先来看,最下面标注的 docker stack deploy不支持的参数 ,具体可以参考下图:
上面的参数,就算yaml中包含,在stack的时候也会被忽略,当然也可以为了 docker-compose up 留着这些配置。
这个命令是在 3.2 版本中开始引入的,主要是用于指定服务发现方法,以方便外部的客户端连接到swarm
主要包含两个:
标签是用于service之上,并非附加在service中的容器上。
如果像将其附在所有容器上,则在 deploy 之外定义labels.
用于指定是以 副本模式(默认) 启动还是 全局模式 ,如果是 全局模式 ,类似于开始于k8s中的DaemonSet,会在每个节点上启动且只启动一个服务。
这个参数在运维的时候尤为关键 ,主要用于指定 容忍 和 偏好 ,这个在k8s中同样有对应的概念
其中, 容忍 包含了:
至于 偏好 ,只有一个参数,就是 spread ,其参数值为节点的属性,即容忍表中的内容。
这个是3.8中添加的配置。
字面意思,就是控制每个节点上最多的副本数
用于指定副本数,只有mode为副本模式的时候生效。
这个参数在运维的时候尤为关键 ,主要用于限制服务的资源。
limit用于限制最大的资源使用数量,reservation为最低的资源占用量。
重启策略
3.7版本加入
用于指定回滚的策略
用于指定升级的策略
以上。
以上是关于【每天学一点】docker-compose中的deploy的主要内容,如果未能解决你的问题,请参考以下文章