古詩詞大全網 - 古詩大全 - 【每天學壹點】docker-compose中的deploy

【每天學壹點】docker-compose中的deploy

由於要進行服務的微服務化部署,由於硬件限制,我們目前采用的是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版本加入

用於指定回滾的策略

用於指定升級的策略

以上。