【每天学一点】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的主要内容,如果未能解决你的问题,请参考以下文章

每天学一点Scala之Try

每天学一点 Kotlin -- 集合:MutableMap

每天学一点Scala之lazy

每天学一点 Kotlin -- 集合:Set

每天学一点系列~看得见摸不着的“隐式类型转换”

每天学一点 Kotlin -- 集合:Array 数组