天天看點

Docker三劍客之Docer Swarm

一、Docker Swarm簡介

(1) Swarm 在 Docker 1.12 版本之前屬于一個獨立的項目,在 Docker 1.12 版本釋出之後,該項目合并到了 Docker中,成為 Docker 的一個子指令。

(2) Swarm 是 Docker 社群提供的唯一一個原生支援 Docker 叢集管理的工具。

(3) Swarm可以把多個 Docker 主機組成的系統轉換為單一的虛拟 Docker 主機,使得容器可以組成跨主機的子網網絡。

(4) Docker Swarm 是一個為 IT 運維團隊提供叢集和排程能力的編排工具。

Docker三劍客之Docer Swarm

(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三劍客之Docer Swarm

二、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
           
Docker三劍客之Docer Swarm

(2)根據提示在其他docker節點上執行指令:

Docker三劍客之Docer Swarm

(3)檢視swarm叢集節

docker node ls
           
Docker三劍客之Docer Swarm

(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三劍客之Docer Swarm

檢視服務是否運作

docker service ls
docker service ps viz 
           
Docker三劍客之Docer Swarm

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

注:如果出現以下報錯

Docker三劍客之Docer Swarm

檢視鏡像時:

Docker三劍客之Docer Swarm

解決辦法:

清空剛才建立的緩存,關閉網絡(剛才的問題是因為連網,建立時直接從網絡上下載下傳了鏡像)

(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
           

繼續閱讀