什么是 Overlay network driver?

发布: (2025年12月5日 GMT+8 19:48)
4 min read
原文: Dev.to

Source: Dev.to

Cover image for What is Overlay network driver?

overlay 网络驱动在多个 Docker 守护进程主机之间创建一个分布式网络。该网络位于(覆盖)主机特定网络之上,当启用加密时,连接到该网络的容器可以安全通信。Docker 会透明地处理每个数据包的路由,使其能够到达正确的 Docker 守护进程主机以及目标容器。

你可以使用 docker network create 创建用户自定义的 overlay 网络,就像创建用户自定义的 bridge 网络一样。服务或容器可以同时连接多个网络,但它们只能在都已连接的网络之间通信。

Overlay 网络常用于连接 Swarm 服务,也可以用于连接运行在不同主机上的独立容器。使用独立容器时,仍然需要 Swarm 模式来建立主机之间的连接。

Overlay 网络所需的端口

在开始之前,请确保参与的节点能够在网络上相互通信。每个参与 Overlay 网络的主机都必须打开以下端口:

  • 2377/tcp – Swarm 控制平面(可通过 docker swarm join --listen-addr 配置)
  • 4789/udp – Overlay 流量(可通过 docker swarm init --data-path-addr 配置)
  • 7946/tcp7946/udp – 节点通信(不可配置)

创建 Overlay 网络

初始化 Docker Swarm

docker swarm init

此命令在主机上初始化 Docker Swarm 并创建一个 Swarm 管理节点。

创建 Overlay 网络

docker network create --driver overlay my-overlay-network

你也可以指定子网和网关:

docker network create --driver overlay \
  --subnet=10.0.1.0/24 \
  --gateway=10.0.1.1 \
  my-overlay-network

若希望独立容器以及 Swarm 服务都能连接该网络:

docker network create --driver overlay --attachable my-overlay-network

--attachable 选项使独立容器和 Swarm 服务都能够连接到 Overlay 网络。若不使用该选项,则仅 Swarm 服务可以连接。

验证 Overlay 网络

docker network ls

在 Overlay 网络上加密流量

使用 --opt encrypted 标志为 Overlay 网络启用 IPsec 加密:

docker network create \
  --opt encrypted \
  --driver overlay \
  --attachable \
  my-attachable-multi-host-network

加密会带来显著的性能开销,因此在生产环境使用前请先进行测试。

将容器附加到 Overlay 网络

将容器加入 Overlay 网络后,它们可以在各自的 Docker 主机上无需手动路由即可相互通信。所有主机必须属于同一个 Swarm。

docker run --network multi-host-network busybox sh

注意: 由于 Linux 内核的限制,当约 1000 个容器共存于同一主机时,Overlay 网络可能会变得不稳定。


相关文章: What is Bridge network driver?

Back to Blog

相关文章

阅读更多 »