Swarm 模式入门

本教程向您介绍 Docker Engine Swarm 模式的功能。 在开始之前,您可能需要熟悉 关键概念。

本教程将指导您完成:

  • 以 Swarm 模式初始化 Docker 引擎集群
  • 将节点添加到集群中
  • 将应用程序服务部署到 Swarm
  • 一旦一切都运行起来就可以管理集群

本教程使用在终端窗口的命令行中输入的 Docker 引擎 CLI 命令。

如果您是 Docker 新手,请参阅关于 Docker 引擎

设置

要运行本教程,您需要:

三台联网主机

本教程需要三台安装了 Docker 并且可以通过网络进行通信的 Linux 主机。这些可以是物理机、虚拟机、Amazon EC2 实例或以其他方式托管。查看 入门 - Swarms ,了解一种可能的主机设置。

其中一台机器是管理者(称为manager1),其中两台机器是工人(worker1worker2)。

笔记

您也可以按照许多教程步骤来测试单节点 swarm,在这种情况下您只需要一台主机。多节点命令不起作用,但您可以初始化集群、创建服务并扩展它们。

在 Linux 机器上安装 Docker 引擎

如果您使用基于 Linux 的物理计算机或云提供的计算机作为主机,只需按照适用于您的平台的Linux 安装说明进行操作即可 。旋转三台机器,您就准备好了。您可以在 Linux 计算机上测试单节点和多节点 swarm 场景。

管理器机器的IP地址

IP 地址必须分配给主机操作系统可用的网络接口。群中的所有节点都需要通过 IP 地址连接到管理器。

由于其他节点通过其 IP 地址联系管理节点,因此您应该使用固定 IP 地址。

您可以ifconfig在 Linux 或 macOS 上运行以查看可用网络接口的列表。

本教程使用manager1192.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

下一步

接下来,您将创建一个群。