Swarm 模式
注意Swarm 模式是用於管理 Docker 守護程序叢集的一項高階功能。
如果您打算將 Swarm 作為生產執行時環境,請使用 Swarm 模式。
如果您不打算使用 Swarm 進行部署,請改用 Docker Compose。如果您正在為 Kubernetes 部署進行開發,請考慮使用 Docker Desktop 中整合的 Kubernetes 功能。
當前版本的 Docker 包含 Swarm 模式,用於原生管理一個名為 swarm 的 Docker Engine 叢集。使用 Docker CLI 建立 swarm、將應用程式服務部署到 swarm 以及管理 swarm 的行為。
Docker Swarm 模式內置於 Docker Engine 中。請不要將 Docker Swarm 模式與不再積極開發的 Docker Classic Swarm 混淆。
功能亮點
與 Docker Engine 整合的叢集管理
使用 Docker Engine CLI 建立一個 Docker Engine 的 swarm,您可以在其中部署應用程式服務。您不需要額外的編排軟體來建立或管理 swarm。
去中心化設計
Docker Engine 在執行時處理任何特殊化,而不是在部署時處理節點角色之間的差異。您可以使用 Docker Engine 部署兩種型別的節點:管理者(manager)和工作者(worker)。這意味著您可以從單個磁碟映象構建整個 swarm。
宣告式服務模型
Docker Engine 使用宣告式方法,讓您定義應用程式堆疊中各種服務的期望狀態。例如,您可以描述一個由 Web 前端服務、訊息佇列服務和資料庫後端組成的應用。
伸縮
對於每個服務,您可以宣告要執行的任務數量。當您進行擴充套件或縮減時,swarm 管理器會自動透過新增或刪除任務來適應,以維持期望的狀態。
期望狀態協調
swarm 管理器節點會持續監控叢集狀態,並協調實際狀態與您表達的期望狀態之間的任何差異。例如,如果您設定一個服務來執行一個容器的 10 個副本,而託管其中兩個副本的工作機器崩潰,管理器會建立兩個新的副本來替換崩潰的副本。swarm 管理器會將新的副本分配給正在執行且可用的工作節點。
多主機網路
您可以為您的服務指定一個覆蓋網路(overlay network)。當 swarm 管理器初始化或更新應用程式時,它會自動為覆蓋網路上的容器分配地址。
服務發現
Swarm 管理器節點為 swarm 中的每個服務分配一個唯一的 DNS 名稱,並對正在執行的容器進行負載均衡。您可以透過嵌入在 swarm 中的 DNS 伺服器查詢 swarm 中執行的每個容器。
負載均衡
您可以將服務的埠暴露給外部負載均衡器。在內部,swarm 允許您指定如何在節點之間分配服務容器。
預設安全
swarm 中的每個節點都強制執行 TLS 雙向認證和加密,以保護其與所有其他節點之間的通訊安全。您可以選擇使用自簽名根證書或來自自定義根 CA 的證書。
滾動更新
在部署時,您可以增量地將服務更新應用到節點。swarm 管理器允許您控制向不同節點集部署服務之間的延遲。如果出現任何問題,您可以回滾到服務的先前版本。
下一步是什麼?
- 瞭解 Swarm 模式的核心概念。
- 透過 Swarm 模式教程入門。
- 探索 Swarm 模式 CLI 命令