Swarm 模式入門

本教程向您介紹 Docker Engine Swarm 模式的功能。在開始之前,您可能需要熟悉關鍵概念

本教程將指導您完成以下內容:

  • 在 Swarm 模式下初始化一個 Docker Engine 叢集
  • 向 Swarm 新增節點
  • 向 Swarm 部署應用程式服務
  • 在一切執行後管理 Swarm

本教程使用在終端視窗命令列中輸入的 Docker Engine CLI 命令。

如果您是 Docker 新手,請參閱關於 Docker Engine

設定

要執行本教程,您需要:

三臺聯網的主機

本教程需要三臺已安裝 Docker 且可以透過網路通訊的 Linux 主機。這些可以是物理機、虛擬機器、Amazon EC2 例項或其他託管方式。請檢視部署到 Swarm,瞭解一種可能的主機設定方案。

其中一臺機器是管理器(稱為 manager1),另外兩臺是工作節點(worker1worker2)。

注意

您也可以按照教程中的許多步驟來測試單節點 Swarm,這種情況下您只需要一臺主機。多節點命令無法工作,但您可以初始化一個 Swarm、建立服務並對其進行擴充套件。

在 Linux 機器上安裝 Docker Engine

如果您使用基於 Linux 的物理計算機或雲服務商提供的計算機作為主機,只需按照您平臺的Linux 安裝說明操作。啟動三臺機器,即可準備就緒。您可以在 Linux 機器上測試單節點和多節點 Swarm 場景。

管理器機器的 IP 地址

IP 地址必須分配給主機作業系統可用的網路介面。Swarm 中的所有節點都需要透過該 IP 地址連線到管理器。

因為其他節點會透過其 IP 地址聯絡管理器節點,所以您應該使用一個固定的 IP 地址。

您可以在 Linux 或 macOS 上執行 ifconfig 來檢視可用網路介面的列表。

本教程使用 manager1 : 192.168.99.100

在主機之間開放協議和埠

以下埠必須可用。在某些系統上,這些埠預設是開放的。

  • 2377 TCP,用於管理器節點之間以及與管理器節點的通訊
  • 7946 TCP/UDP,用於覆蓋網路節點發現
  • 4789 UDP(可配置),用於覆蓋網路流量

如果您計劃建立一個帶有加密功能(--opt encrypted)的覆蓋網路,您還需要確保允許 IP 協議 50(IPSec ESP)的流量。

4789 是 Swarm 資料路徑埠(也稱為 VXLAN 埠)的預設值。防止任何不受信任的流量到達此埠非常重要,因為 VXLAN 不提供身份驗證。此埠只應對受信任的網路開放,絕不應在邊界防火牆上開放。

如果 Swarm 流量經過的網路不完全受信任,強烈建議使用加密的覆蓋網路。如果只使用加密的覆蓋網路,建議進行一些額外的加固:

# Example iptables rule (order and other tools may require customization)
iptables -I INPUT -m udp --dport 4789 -m policy --dir in --pol none -j DROP

後續步驟

接下來,您將建立一個 Swarm。

建立 swarm