Swarm 模式入门
本教程向你介绍 Docker Engine Swarm 模式的功能。开始之前,你可能需要熟悉一下 关键概念。
本教程将引导你完成
- 在 swarm 模式下初始化 Docker Engines 集群
- 向 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
。
在主机之间开放协议和端口
以下端口必须可用。在某些系统上,这些端口默认是开放的。
- 用于管理器节点之间以及与其他节点通信的 TCP 端口
2377
- 用于 overlay 网络节点发现的 TCP/UDP 端口
7946
- 用于 overlay 网络流量的 UDP 端口
4789
(可配置)
如果你计划创建加密的 overlay 网络 (--opt encrypted
),你还需要确保允许 IP 协议 50 (IPSec ESP) 流量。
端口 4789
是 Swarm 数据路径端口的默认值,也称为 VXLAN 端口。重要的是防止任何不受信任的流量到达此端口,因为 VXLAN 不提供认证。此端口只应开放给可信网络,绝不应在边界防火墙上开放。
如果 Swarm 流量经过的网络并非完全可信,强烈建议使用加密的 overlay 网络。如果仅使用加密的 overlay 网络,建议进行一些额外的加固
- 使用加密 自定义默认 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。