從「docker 1.12.0」版本開始內建swarm;swarm是用於管理docker叢集的平台,採用go語言完成的開發,從「1.12.0」版本開始,「Docker Swarm」已經包含在Docker引擎中,並且已經內建了服務發現工具,因此不需要再配置Etcd或Consul來進行服務發現配置。
本教學操作環境:linux7.3系統、docker19.03版、Dell G3電腦。
Swarm 是Docker 公司推出的用來管理docker 叢集的平台,幾乎全部用GO 語言來完成的開發的
Docker Swarm 和Docker Compose 一樣,都是Docker 官方容器編排項目,但不同的是,Docker Compose 是一個在單一伺服器或主機上建立多個容器的工具,而Docker Swarm 則可以在多個伺服器或主機上建立容器叢集服務,對於微服務的部署,顯然Docker Swarm 會更適合。
從Docker 1.12.0 版本開始,Docker Swarm 已經包含在Docker 引擎中(docker swarm),並且已經內建了服務發現工具,我們就不需要像之前一樣,再配置Etcd 或者Consul 來進行服務發現配置了。
上圖可以看出,Swarm 是典型的 master-slave 結構,透過發現服務來選舉 manager。 manager 是中心管理節點,各個node 上運行agent 接受manager 的統一管理,集群會自動通過Raft 協議分佈式選舉出manager 節點,無需額外的發現服務支持,避免了單點的瓶頸問題,同時也內置了DNS的負載平衡和對外部負載平衡機制的整合支援。
擴充知識
Docker Swarm 工作原理
1)Docker Engine client
docker service create:我們透過docker service create這個指令去創建一個服務。
2)swarm manager
API:這個請求直接由Swarm manager的API接收,接收指令並建立服務物件。
orchestrator:為服務建立一個任務。
allocater:為這個任務指派IP位址。
dispatcher:將任務指派到指定的節點。
scheduler:再該節點中下發指定指令。
3)worker node:接收manager任務後去執行這個任務
container:建立對應的容器。
worker:連接到調度程序以檢查分配的任務
executor:執行分配給工作節點的任務
Service:為一個副本,可以理解為是一個任務,一個任務是一個容器。
swarm manager:它將這個副本下發到三個可用的work節點。
container:實際的docker容器去運行應用程式。
task:work任務的名稱為service名稱後面跟著.1根據個數以此類推。
推薦學習:《docker影片教學》
以上是docker哪個版本內建swarm的詳細內容。更多資訊請關注PHP中文網其他相關文章!