一、Docker Swarm簡介
(1) Swarm 在 Docker 1.12 版本之前屬于一個獨立的項目,在 Docker 1.12 版本釋出之後,該項目合并到了 Docker中,成為 Docker 的一個子指令。
(2) Swarm 是 Docker 社群提供的唯一一個原生支援 Docker 叢集管理的工具。
(3) Swarm可以把多個 Docker 主機組成的系統轉換為單一的虛拟 Docker 主機,使得容器可以組成跨主機的子網網絡。
(4) Docker Swarm 是一個為 IT 運維團隊提供叢集和排程能力的編排工具。

(1) Docker Swarm 優點
a. 任何規模都有高性能表現
b. 靈活的容器排程
c. 服務的持續可用性
d. 和 Docker API 及整合支援的相容性
e. Docker Swarm 為 Docker 化應用的核心功能(諸如多主機網絡和存儲卷管理)提供原生支援。
(2) docker swarm 相關概念
a. 節點分為管理 (manager) 節點和工作 (worker) 節點
b. 任務 (Task)是 Swarm 中的最小的排程機關,目前來說就是一個單一的容器。
c. 服務 (Services) 是指一組任務的集合,服務定義了任務的屬性。
二、Docker Swarm實踐
環境:
server5 (172.25.60.5) | manager |
---|---|
server4 (172.25.60.4) | worker |
server6 (172.25.60.6) | worker |
注: server4/5/6都安裝docker,并打開。如果前面做過其他實驗,要清緩存,保證幹淨的環境
1.建立 Swarm 叢集
(1)初始化叢集:
docker swarm init --advertise-addr 172.25.60.5
(2)根據提示在其他docker節點上執行指令:
(3)檢視swarm叢集節
docker node ls
(4) 部署swarm監控:(各節點提前導入dockersamples/visualizer鏡像)
docker service create --name=viz --publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
檢視服務是否運作
docker service ls
docker service ps viz
2.建立叢集服務
(1)docker service create (server4/5/6都有nginx鏡像)
docker service create --replicas 3 --name web--publish 80:80 nginx:1.16
docker service create 指令建立一個服務
–name 服務名稱命名為 my_cluster
–network 指定服務使用的網絡模型(此處未用)
–replicas 設定啟動的示例數為3
注:如果出現以下報錯
檢視鏡像時:
解決辦法:
清空剛才建立的緩存,關閉網絡(剛才的問題是因為連網,建立時直接從網絡上下載下傳了鏡像)
(2)彈性伸縮
docker service scale web=60 //拉神
docker service scale web=3 //壓縮
(3)滾動更新
docker service update --image game2048 --update-delay 5s --update-parallelism 2 web
–image 指定要更新的鏡像
–update-parallelism 指定最大同步更新的任務數
–update-delay 指定更新間隔
3.再介紹一種建立叢集服務的方法
docker service create --name web --publish 80:80 --mode global game2048
–mode global:每個上面隻能運作一個服務
優點: 新添加進去的worker會自動,隻要有鏡像會自動拉起服務,并加入監控
注:删除swarm叢集
worker:
docker swarm leave
manager:
docker node rm server4
docker swarm leave -f
docker volume prune
docker network prune
dockerr container prune