Docker Swarm 模式入門
本教學將介紹 Docker Engine Swarm 模式的功能。建議您在開始之前先熟悉主要概念。
本教學將引導您完成以下步驟:
- 在 Swarm 模式下初始化 Docker Engine 叢集
- 將節點加入 Swarm
- 將應用程式服務部署到 Swarm
- 在一切就緒後管理 Swarm
本教學使用在終端機視窗的命令列中輸入的 Docker Engine CLI 命令。
如果您是 Docker 的新手,請參閱關於 Docker Engine。
設定
要執行本教學,您需要:
三個網路連線的主機
本教學需要三台已安裝 Docker 並可透過網路通訊的 Linux 主機。這些可以是實體機器、虛擬機器、Amazon EC2 執行個體或以其他方式託管。查看部署到 Swarm以了解主機的一種可能設定方式。
其中一台機器是管理者 (稱為 manager1
),另外兩台是工作者 (worker1
和 worker2
)。
注意
您也可以按照許多教學步驟來測試單節點 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 流量穿過的網路並非完全受信任,強烈建議使用加密的覆蓋網路。如果專門使用加密的覆蓋網路,建議進行一些額外的強化
- 自訂預設 Ingress 網路以使用加密
- 僅接受資料路徑連接埠上的加密封包
# 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。