开始使用 Swarm 模式
本教程将向您介绍 Docker Engine Swarm 模式的特性。在开始之前,您可能希望先熟悉 核心概念。
本教程将指导您完成:
- 在 swarm 模式下初始化 Docker Engine 集群
- 将节点添加到群集
- 将应用服务部署到 Swarm
- 在一切运行正常后管理集群
本教程使用在终端窗口命令行中输入的 Docker Engine CLI 命令。
如果您是 Docker 的新手,请参阅 关于 Docker Engine。
设置
要运行本教程,您需要:
三台联网的主机
本教程需要三台已安装 Docker 的 Linux 主机,并且它们之间可以通过网络互相通信。这些主机可以是物理机、虚拟机、Amazon EC2 实例,或者以其他托管方式部署。有关主机的可能配置,请参阅 部署到 Swarm。
其中一台机器是管理节点(称为 manager1),另外两台是工作节点(worker1 和 worker2)。
注意
您可以按照许多教程步骤来测试单节点集群,在这种情况下您只需要一台主机。多节点命令无法使用,但您可以初始化集群、创建服务并进行扩展。
在 Linux 机器上安装 Docker Engine
如果您使用基于 Linux 的物理计算机或云提供的计算机作为 主机,只需按照 Linux 安装说明 适用于您的平台。启动三台机器,您就可以开始使用了。您可以在 Linux 机器上测试 单节点和多节点蜂群场景。
管理节点的 IP 地址
该 IP 地址必须分配给主机操作系统可用的网络接口。集群中的所有节点都需要通过该 IP 地址连接到管理节点。
由于其他节点通过 IP 地址联系管理节点,因此您应使用固定 IP 地址。
您可以在 Linux 或 macOS 上运行 ifconfig,以查看可用的网络接口列表。
本教程使用 manager1 : 192.168.99.100。
在主机之间开放协议和端口
以下端口必须可用。在某些系统上,这些端口默认是开放的。
- 端口
2377TCP 用于管理节点之间以及与管理节点的通信 - 端口
7946TCP/UDP 用于覆盖网络节点发现 - 端口
4789UDP(可配置)用于覆盖网络流量
如果您计划创建一个带加密(--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)。