Swarm 模式
注意Swarm 模式是用於管理 Docker Daemon 叢集的高階功能。
如果您打算將 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 部署這兩種節點(管理節點和工作節點)。這意味著您可以使用單一磁碟映像檔來建構整個 swarm。
宣告式服務模型
Docker Engine 使用宣告式方法,讓您定義應用程式堆疊中各種服務的預期狀態。例如,您可以描述一個包含 Web 前端服務、訊息佇列服務和資料庫後端的應用程式。
擴充能力
對於每個服務,您可以宣告您想要執行的任務數量。當您進行橫向擴充或縮減時,swarm 管理員會自動調整,透過增加或移除任務來維持預期狀態。
預期狀態協調 (Desired state reconciliation)
swarm 管理節點會持續監控叢集狀態,並協調實際狀態與您定義的預期狀態之間的任何差異。例如,如果您將服務設定為執行 10 個容器複本,而其中一台承載兩個複本的工作機器當機,管理員會建立兩個新複本來取代當機的複本。swarm 管理員會將新複本分配給正在執行且可用的工作節點。
多主機網路
您可以為服務指定覆蓋網路 (overlay network)。當 swarm 管理員初始化或更新應用程式時,它會自動為覆蓋網路上的容器分配位址。
服務發現
swarm 管理節點會為 swarm 中的每個服務分配唯一的 DNS 名稱,並對執行中的容器進行負載平衡。您可以透過嵌入在 swarm 中的 DNS 伺服器查詢在 swarm 中執行的每個容器。
負載平衡
您可以將服務的連接埠暴露給外部負載平衡器。在內部,swarm 允許您指定如何在節點之間分配服務容器。
預設安全
swarm 中的每個節點都會強制執行 TLS 相互驗證和加密,以保護其與所有其他節點之間的通訊。您可以選擇使用自簽署根憑證或來自自訂根 CA 的憑證。
滾動更新
在推出時,您可以將服務更新漸進地應用於節點。swarm 管理員讓您控制部署服務到不同節點集合之間的延遲。如果發生任何問題,您可以回復到服務的先前版本。
下一步是什麼?
- 學習 Swarm 模式的關鍵概念。
- 開始使用 Swarm 模式教學。
- 探索 Swarm 模式 CLI 指令