覆盖网络驱动程序
网络驱动程序在多个
Docker 守护程序主机。此网络位于 (覆盖) 特定于主机的
网络,允许连接到它的容器在
已启用加密。Docker 透明地处理每个数据包到
以及从正确的 Docker 守护程序主机和正确的目标容器。overlay
您可以使用 创建用户定义的网络
与创建用户定义的网络的方式相同。服务业
或者容器可以一次连接到多个网络。Services 或
容器只能跨它们各自连接的网络进行通信。overlay
docker network create
bridge
覆盖网络通常用于在 Swarm 服务之间创建连接, 但您也可以使用它来连接在不同 主机。使用独立容器时,您仍然需要使用 Swarm 模式在主机之间建立连接。
本页介绍了覆盖网络的一般情况,以及与独立网络一起使用时 器皿。有关 Swarm 服务的覆盖层的信息,请参阅管理 Swarm 服务网络。
创建叠加网络
在开始之前,您必须确保参与的节点可以通过网络进行通信。 下表列出了需要向参与覆盖网络的每个主机开放的端口:
港口 | 描述 |
---|---|
2377/tcp | 默认的 Swarm 控制平面端口可通过 docker swarm join --listen-addr 进行配置 |
4789/udp | 默认叠加流量端口,可通过 docker swarm init --data-path-addr 配置 |
7946/tcp ,7946/udp | 用于节点之间的通信,不可配置 |
要创建其他 Docker 主机上的容器可以连接的覆盖网络, 运行以下命令:
$ docker network create -d overlay --attachable my-attachable-overlay
该选项支持两个独立容器
和 Swarm 服务连接到覆盖网络。
如果没有 ,只有 Swarm 服务可以连接到网络。--attachable
--attachable
您可以指定 IP 地址范围、子网、网关和其他选项。有关详细信息,请参阅。docker network create --help
加密覆盖网络上的流量
使用标志加密应用程序数据
通过 Overlay 网络传输:--opt encrypted
$ docker network create \
--opt encrypted \
--driver overlay \
--attachable \
my-attachable-multi-host-network
这将在虚拟可扩展 LAN (VXLAN) 级别启用 IPsec 加密。 这种加密会带来不可忽略的性能损失, 因此,您应该在生产中使用此选项之前对其进行测试。
警告
不要将 Windows 容器附加到加密的覆盖网络。
Windows 不支持覆盖网络加密。 当 Windows 主机 尝试连接到加密的覆盖网络, 但 Windows 容器的联网受到影响,如下所示:
- Windows 容器无法与网络上的 Linux 容器通信
- 网络上 Windows 容器之间的数据流量未加密
将容器附加到覆盖网络
将容器添加到覆盖网络使它们能够进行通信 替换为其他容器,而无需在单个 Docker 上设置路由 守护进程主机。执行此操作的先决条件是主机已加入同一个 Swarm。
要加入以容器命名的覆盖网络,请执行以下操作:multi-host-network
busybox
$ docker run --network multi-host-network busybox sh
注意
这仅在叠加网络可附加时有效 (使用标志创建)。
--attachable
容器发现
在覆盖网络上发布容器的端口会将端口打开到其他 容器。可以通过执行 DNS 查找来发现容器 使用容器名称。
标志值 | 描述 |
---|---|
-p 8080:80 | 将容器中的 TCP 端口 80 映射到覆盖网络上的端口。8080 |
-p 8080:80/udp | 将容器中的 UDP 端口 80 映射到覆盖网络上的端口。8080 |
-p 8080:80/sctp | 将容器中的 SCTP 端口 80 映射到覆盖网络上的端口。8080 |
-p 8080:80/tcp -p 8080:80/udp | 将容器中的 TCP 端口 80 映射到覆盖网络上的 TCP 端口,并将容器中的 UDP 端口 80 映射到覆盖网络上的 UDP 端口。8080 8080 |
覆盖网络的连接限制
由于 Linux 内核设置的限制,覆盖网络变得不稳定,并且 当 1000 个容器共存时,容器间通信可能会中断 同一主机。
有关此限制的更多信息,请参阅 moby/moby#44973。
后续步骤
- 完成覆盖网络教程
- 从容器的角度了解网络
- 了解独立桥接网络
- 了解 Macvlan 网络