Docker Swarm 是 Docker 的叢集管理工具。它将 Docker 主機池轉變為單個虛拟 Docker 主機。 Docker Swarm 提供了标準的 Docker API,所有任何已經與 Docker 守護程式通信的工具都可以使用 Swarm 輕松地擴充到多個主機。
支援的工具包括但不限于以下各項:
Dokku
Docker Compose
Docker Machine
Jenkins
如下圖所示,swarm 叢集由管理節點(manager)和工作節點(work node)構成。
swarm mananger:負責整個叢集的管理工作包括叢集配置、服務管理等所有跟叢集有關的工作。
work node:即圖中的 available node,主要負責運作相應的服務來執行任務(task)。

以下示例,均以 Docker Machine 和 virtualbox 進行介紹,確定你的主機已安裝 virtualbox。
建立 docker 機器:
初始化 swarm 叢集,進行初始化的這台機器,就是叢集的管理節點。
以上輸出,證明已經初始化成功。需要把以下這行複制出來,在增加工作節點時會用到:
這裡直接建立好倆台機器,swarm-worker1 和 swarm-worker2 。
分别進入兩個機器裡,指定添加至上一步中建立的叢集,這裡會用到上一步複制的内容。
以上資料輸出說明已經添加成功。
上圖中,由于上一步複制的内容比較長,會被自動截斷,實際上在圖運作的指令如下:
進入管理節點,執行:docker info 可以檢視目前叢集的資訊。
通過畫紅圈的地方,可以知道目前運作的叢集中,有三個節點,其中有一個是管理節點。
注意:跟叢集管理有關的任何操作,都是在管理節點上操作的。
以下例子,在一個工作節點上建立一個名為 helloworld 的服務,這裡是随機指派給一個工作節點:
檢視 helloworld 服務運作在哪個節點上,可以看到目前是在 swarm-worker1 節點:
檢視 helloworld 部署的具體資訊:
我們将上述的 helloworld 服務擴充到倆個節點。
可以看到已經從一個節點,擴充到兩個節點。
檢視是否已删除:
以下執行個體,我們将介紹 redis 版本如何滾動更新至更高版本。
建立一個 3.0.6 版本的 redis。
滾動更新 redis 。
看圖可以知道 redis 的版本已經從 3.0.6 更新到了 3.0.7,說明服務已經更新成功。
檢視所有的節點:
可以看到目前所有的節點都是 Active, 可以接收新的任務配置設定。
停止節點 swarm-worker1:
注意:swarm-worker1 狀态變為 Drain。不會影響到叢集的服務,隻是 swarm-worker1 節點不再接收新的任務,叢集的負載能力有所下降。
可以通過以下指令重新激活節點: