docker swarm基本用法

docker swarm背景介紹

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

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

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

初始化

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

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

image.png

添加節(jié)點

初始化之后你在其他服務器將這臺服務器進行節(jié)點添加,這里我們設置了兩個三個節(jié)點一主節(jié)點兩個子節(jié)點,添加完節(jié)點之后再主節(jié)點上查看添加的所有節(jié)點查看節(jié)點狀態(tài)。

image.png
image.png

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

image.png

添加/刪除 標簽

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

添加ksice標簽進行測試,在164節(jié)點上添加之后查看164節(jié)點上的標簽就能看到ksice為true的標識,一個節(jié)點上可以設置多個標簽。

image.png

同時刪除標簽docker node update --label-rm ksice 192-168-138-164

image.png

部署服務

所有節(jié)點添加完成之后就可以開始部署服務了,你可以通過命令進行部署,這就是個例子

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

  • docker service create用來創(chuàng)建服務
  • --name表明服務名字是visualizer
  • --replicas 表示期望1個服務實例
  • docker.io/dockersamples/visualizer 表示運行鏡像是docker.io/dockersamples/visualizer

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

image.png

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

將文件進行運行部署之后可以通過docker service ls查看服務運行狀態(tài)和運行個數(shù)

image.png

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

  • docker service scale用來修改服務實例數(shù)
  • xxx代表服務name或者服務id
  • num代表個數(shù)

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

image.png

如果你運行報錯想查看error錯誤,鏡像啟動成功的話有鏡像id可以通過docker logs 鏡像id ,如果沒有鏡像id則采用

docker service ps --no-trunc <service name> 將截斷的error信息展示出來

想查看運行服務日志可以采用docker service logs -f 服務名進行實時查看

同時你還可以通過docker service update --image 在線更新服務所用鏡像版本

docker service update --image 鏡像名稱:鏡像tag 服務名稱

解散集群

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

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

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