Swarm 模式入门

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

本教程将引导您了解:

  • 在群集模式下初始化Docker引擎集群
  • 向集群添加节点
  • 将应用程序服务部署到集群
  • 一旦所有内容运行起来,管理集群

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

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

设置

要运行本教程,您需要:

三台联网的主机

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

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

注意

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

在Linux机器上安装Docker引擎

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

管理机器的IP地址

IP地址必须分配给主机操作系统可用的网络接口。群集中的所有节点都需要通过该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

下一步

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