Docker Labs 网络进阶如何用 Overlay 网络实现跨主机容器通信与多租户隔离如果你正被不同机器上的容器互连不上这个问题卡住Docker Labs 的这套 Overlay 网络进阶教程就是为你准备的。Docker Labs 是一个 Docker 工具与场景的实战教程合集本文带你用不到 10 分钟走通Overlay 网络的完整上手路径5 步搭建跨主机容器通信、在同一集群内实现多租户隔离以及一条命令开启数据平面加密。全程几乎不用写配置概念图全部来自仓库官方教程。为什么跨主机容器通信是个老大难默认的 bridge桥接网络只覆盖单台主机。应用一旦拆到多台机器上web 容器和数据库容器就互相找不到人——你得手动记 IP、手动映射端口、把地址硬编码进应用扩容或迁移时更是噩梦。Overlay 网络一次性解决这些痛点只要容器挂在同一个 Overlay 网络上不同主机之间就能按名字互相调用路由、地址分配和服务发现全部由集群自动完成 10 分钟看懂 Overlay 网络原理VXLAN 封装把容器的专线包进物理网络Overlay 驱动使用业界标准的VXLANMAC-in-UDP封装容器的二层帧被包进 VXLAN 报文再走现有物理网络underlay。下图中从上到下就是应用数据 → Overlay 网络 → Underlay 网络的完整报文结构其中的VXLAN ID正是多租户网络隔离的关键——不同网络用不同 ID互相天然不可见。数据包如何跨越主机下面这张图完整演示了容器 c1 访问另一台主机上容器 c2 的全过程本地 DNS 解析服务名 → overlay 驱动打上 VXLAN 头 → 物理网络负责转发 → 对端主机解封装后投递给目标容器。整个链路无需手工配置任何 Linux 网络或隧道Swarm 分布式控制平面会自动管理所有隧道的状态与位置。5 步搭建跨主机 Overlay 网络实操指南跟着 A3-overlay-networking.md 这份官方动手实验5 步即可完成组建 Swarm 集群主机 A 执行docker swarm init把输出的 join 命令在主机 B 上粘贴执行两节点即组成集群。创建 overlay 网络docker network create -d overlay overnet此时它的 Scope 是整个 swarm而不只是单台主机。创建服务用docker service create --network overnet --replicas 2部署两个副本Swarm 会自动把任务调度到两台主机上各一个。验证跨主机连通性登录主机 A 的容器直接 ping 主机 B 上任务的 IP——一次通过通信链路即打通 ✅体验服务发现容器内直接ping myservice内置 DNS 会把它解析为服务的 VIP并自动负载均衡到健康副本上。 一个值得注意的细节overlay 网络不会预先铺满所有主机只有当容器被调度到某台主机时该主机才会惰性生成对应网络接口避免资源浪费。多租户隔离1 个集群、2 个租户、互不干扰多租户不需要多个集群——每个租户建一个 overlay 网络即可。不同网络默认在三层就互相隔离相当于内置防火墙dognet租户的容器和catnet租户的容器谁也摸不到谁。教程里还有一个巧妙的admin服务它同时挂到两个网络上成为能访问全部容器的超级管理员租户。这就是经典的网络微分段思路——每个应用一个独立房间需要管理权限时才显式多挂一个网络。具体实现可参考 tutorials.md#L163-L179。如果你的环境要求容器直接使用物理网段 IP比如要被传统交换机统一管理还可以评估 MACVLAN 方案用 VLAN 划分子网来隔离租户安全进阶一条命令开启数据平面加密如果集群跨机房或跨云部署底层物理网络可能不完全受你控制。创建网络时加上--opt encryptedtrueSwarm 就会在两台主机间自动建立IPsec 隧道AES-GCM 加密应用流量出源即加密、入目的即解密。密钥由 Swarm 领导者定期轮换并安全分发完全不用你手工管理证书 这套默认 L3 隔离 可选 IPsec 加密的组合细节设计思路见 11-security.md#L13-L23。学习资源清单内容路径Overlay 跨主机动手实验建议从这篇开始networking/A3-overlay-networking.mdOverlay 架构与 VXLAN 原理networking/concepts/06-overlay-networks.md网络部署模型对比bridge / overlay / macvlannetworking/tutorials.md网络安全与加密设计考量networking/concepts/11-security.md网络驱动选型对比表networking/concepts/02-drivers.md网络教程总入口networking/README.mdSwarm 集群搭建入门swarm-mode/beginner-tutorial/README.md常见问题 FAQQ为什么主机 B 上docker network ls看不到我刚建的 overlay 网络A正常现象。Docker 只在有容器需要运行的主机上生成 overlay 网络任务一旦调度到该主机网络会自动出现。Q不同 overlay 网络上的容器能互相通信吗A默认不能网络之间在三层天然隔离。确需互通时可像admin服务那样把容器同时挂到多个网络上。Qoverlay 的性能开销大吗A数据平面完全运行在内核态使用 Linux 内核原生 VXLAN避免了用户态转发延迟很低对时延极端敏感的场景可评估免 NAT 的 macvlan 方案。学完这篇你已经掌握了 Overlay 跨主机通信与多租户隔离的核心玩法建议接着打开 networking/concepts/13-troubleshooting.md 补齐故障排查技能实战中会更从容 创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
