docker swarm基本用法

docker swarm背景介紹

Docker Swarm是一個(gè)Dockerized化的分布式應(yīng)用程序的本地集群,它是在Machine所提供的功能的基礎(chǔ)上優(yōu)化主機(jī)資源的利用率和容錯(cuò)服務(wù)。具體來(lái)說(shuō),Docker Swarm支持用戶創(chuàng)建可運(yùn)行Docker Daemon的主機(jī)資源池,然后在資源池中運(yùn)行Docker容器。Docker Swarm可以管理工作負(fù)載并維護(hù)集群狀態(tài)。

除了資源優(yōu)化,Docker Swarm可以保證應(yīng)用的高可用性和容錯(cuò)性。Docker Swarm會(huì)不斷的檢查Docker Daemon所在主機(jī)的健康狀態(tài)。當(dāng)某個(gè)主機(jī)不可用時(shí),Swarm就會(huì)將容器遷移到新的主機(jī)上。

Docker Swarm的亮點(diǎn)之一是它可以在應(yīng)用的生命周期內(nèi)擴(kuò)展,而且還可以實(shí)現(xiàn)滾動(dòng)升級(jí)和動(dòng)態(tài)修改節(jié)點(diǎn)。

初始化

docker swarm init --advertise-addr <MANAGER1-IP>

我們采用最常用的方式進(jìn)行初始化,在主節(jié)點(diǎn)上進(jìn)行容器初始化MANAGER1-IP填寫的主節(jié)點(diǎn)的ip地址,這個(gè)地址需要保證子節(jié)點(diǎn)可以正常訪問的ip地址,初始化完成之后,它會(huì)提示如果需要新增worker節(jié)點(diǎn)加入這個(gè)集群所需要運(yùn)行的命令。

image.png

添加節(jié)點(diǎn)

初始化之后你在其他服務(wù)器將這臺(tái)服務(wù)器進(jìn)行節(jié)點(diǎn)添加,這里我們?cè)O(shè)置了兩個(gè)三個(gè)節(jié)點(diǎn)一主節(jié)點(diǎn)兩個(gè)子節(jié)點(diǎn),添加完節(jié)點(diǎn)之后再主節(jié)點(diǎn)上查看添加的所有節(jié)點(diǎn)查看節(jié)點(diǎn)狀態(tài)。

image.png
image.png

如果你之后還需要添加節(jié)點(diǎn)找不到命令可以運(yùn)行docker swarm join-token worker 查看添加節(jié)點(diǎn)命令。

image.png

添加/刪除 標(biāo)簽

設(shè)置好所有的子節(jié)點(diǎn)之后,我們需要進(jìn)行設(shè)置tag標(biāo)簽用于后面部署服務(wù),進(jìn)行標(biāo)識(shí)告知哪些服務(wù)部署哪些節(jié)點(diǎn),這里我們使用命令docker node update --label-add ksice 192-168-138-164

添加ksice標(biāo)簽進(jìn)行測(cè)試,在164節(jié)點(diǎn)上添加之后查看164節(jié)點(diǎn)上的標(biāo)簽就能看到ksice為true的標(biāo)識(shí),一個(gè)節(jié)點(diǎn)上可以設(shè)置多個(gè)標(biāo)簽。

image.png

同時(shí)刪除標(biāo)簽docker node update --label-rm ksice 192-168-138-164

image.png

部署服務(wù)

所有節(jié)點(diǎn)添加完成之后就可以開始部署服務(wù)了,你可以通過(guò)命令進(jìn)行部署,這就是個(gè)例子

docker service create --replicas 1 --name visualizer docker.io/dockersamples/visualizer

  • docker service create用來(lái)創(chuàng)建服務(wù)
  • --name表明服務(wù)名字是visualizer
  • --replicas 表示期望1個(gè)服務(wù)實(shí)例
  • docker.io/dockersamples/visualizer 表示運(yùn)行鏡像是docker.io/dockersamples/visualizer

還有一種命令部署的方式是通過(guò)docker-compose.yml文件來(lái)進(jìn)行部署 docker stack deploy -c 配置文件.yml 自定義網(wǎng)絡(luò)

image.png

采用docker-compose部署還需要在節(jié)點(diǎn)上設(shè)置多個(gè)tag標(biāo)簽(也可以設(shè)置具體的節(jié)點(diǎn)),都是用來(lái)告知哪些服務(wù)該部署在哪臺(tái)節(jié)點(diǎn)上,防止所有服務(wù)跑到一臺(tái)服務(wù)器上引起服務(wù)器資源分配不均。

將文件進(jìn)行運(yùn)行部署之后可以通過(guò)docker service ls查看服務(wù)運(yùn)行狀態(tài)和運(yùn)行個(gè)數(shù)

image.png

你也可以通過(guò)docker service scale xxxx = num 用來(lái)合理的調(diào)整運(yùn)行的實(shí)例數(shù)目

  • docker service scale用來(lái)修改服務(wù)實(shí)例數(shù)
  • xxx代表服務(wù)name或者服務(wù)id
  • num代表個(gè)數(shù)

還可以通過(guò)docker service ps 服務(wù)名,查看服務(wù)部署在哪些節(jié)點(diǎn)上和最近的運(yùn)行歷史

image.png

如果你運(yùn)行報(bào)錯(cuò)想查看error錯(cuò)誤,鏡像啟動(dòng)成功的話有鏡像id可以通過(guò)docker logs 鏡像id ,如果沒有鏡像id則采用

docker service ps --no-trunc <service name> 將截?cái)嗟膃rror信息展示出來(lái)

想查看運(yùn)行服務(wù)日志可以采用docker service logs -f 服務(wù)名進(jìn)行實(shí)時(shí)查看

同時(shí)你還可以通過(guò)docker service update --image 在線更新服務(wù)所用鏡像版本

docker service update --image 鏡像名稱:鏡像tag 服務(wù)名稱

解散集群

docker node update --availability drain <node id> 將節(jié)點(diǎn)停用,該節(jié)點(diǎn)上的容器會(huì)遷移到其他節(jié)點(diǎn)確保服務(wù)正常,在進(jìn)行docker swarm leave 主節(jié)點(diǎn)需要加個(gè)force強(qiáng)制解散。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容