Docker 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。