在使用 Docker Swarm 构建集群环境过程中,于 ts3 节点出现了原有的容器端口全部失效,手动重启后才恢复的情况。期间涉及 docker swarm init --advertise-addr=172.16.10.110 以及 docker swarm join --token <MANAGER-TOKEN> <MANAGER-IP>:<MANAGER-PORT> 等操作,下面深入探究为何会出现端口失效及恢复的现象。
角色 | IP | hostname |
|---|---|---|
Manager1 | 172.16.10.110 | ts3 |
Manager2 | 172.16.10.111 | ts4 |
Worker1 | 172.16.10.120 | harbor |

手动重启容器后才恢复的情况

docker swarm init 或 docker swarm join 操作时,Docker 为保障 Swarm 集群内部高效通信,会创建新的覆盖网络(overlay network)。此网络构建过程涉及复杂的网络配置调整。通过对上述各因素的详细剖析可知,docker swarm init 与 docker swarm join 操作绝非孤立地改变节点的某一特性,而是从网络配置、服务发现、DNS 以及资源分配等多维度重塑节点运行环境。这些深层次变革在带来集群强大功能与高效管理的同时,也不可避免地对原有的容器端口映射造成冲击,致使端口失效。唯有深入理解这些内在原理,才能在遭遇问题时精准施策,保障 Docker Swarm 集群稳定运行。