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流量所经过的网络并非完全可信,强烈建议使用加密的覆盖网络。如果专门使用加密的覆盖网络,建议进行一些额外的加固。
- 自定义默认入口网络 以使用加密。
- 仅在数据路径端口上接受加密数据包。
# 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。