Docker Windows管理节点创建的Overlay网络Linux工作节点无法加入问题
问题原因与解决方案
核心问题1:docker-compose配置缺少外部网络声明
你当前的compose文件networks段没有添加external: true属性,docker-compose默认会尝试在当前节点本地创建同名网络,而非复用Swarm集群中已有的全局Overlay网络。Windows节点可以正常复用是Windows端Docker的特殊适配逻辑,Linux端Docker会严格按照默认逻辑创建本地bridge网络,导致跨节点隔离。
核心问题2:(若配置非笔误)网络名不匹配
你手动在Swarm集群创建的Overlay网络名为Y_OVERLAY,但你贴出的compose配置中name字段写的是Y_OVERLAY0,名称不匹配也会导致compose找不到集群网络,直接创建本地网络。
额外校验项(Swarm跨OS必配)
Oracle Linux 8默认开启firewalld,需放开Swarm Overlay网络所需端口,否则就算网络配置正确也无法跨节点通信:
- TCP 2377:Swarm集群管理通信
- TCP/UDP 7946:Swarm节点发现通信
- UDP 4789:Overlay网络数据流量
修复步骤
- 先删除Linux节点上错误创建的本地bridge网络:
docker network rm Y_OVERLAY
- 修改docker-compose的
networks段为以下配置,明确指定复用已有的Swarm Overlay网络:
networks: YADAMU-NET: name: Y_OVERLAY # 和集群中实际创建的Overlay网络名保持一致 driver: overlay external: true # *关键配置*:声明网络为已存在的外部网络,compose不自行创建 attachable : true
- 重新执行
docker-compose up -d启动容器即可。
内容的提问来源于stack exchange,提问作者mark d drake
相关产品推荐
相关产品推荐

