You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker Swarm集群部署报错:connect: no route to host求助

Docker Swarm Join失败问题排查方案

1. 先搞清楚4789端口的情况

Docker Swarm的VXLAN overlay网络依赖UDP 4789端口,但netstat -tulpn | grep LISTEN查不到UDP端口的监听状态(这个命令只显示TCP的监听)。你可以在主节点D1执行:

sudo ss -ulpn | grep 4789

如果没结果,大概率是Swarm初始化时绑定了错误的地址。重新初始化Swarm,指定节点的真实外部IP:

sudo docker swarm init --advertise-addr <D1的实际网卡IP> --listen-addr <D1的实际网卡IP>:2377

别用localhost或127.0.0.1,必须用其他节点能访问到的IP。

2. 实打实验证端口连通性

哪怕你说没防火墙限制,也手动测一遍:

  • 在D2/D3上执行telnet <D1的IP> 2377,连不上的话,按下面步骤排查:
    • 彻底关闭firewalld:sudo systemctl stop firewalld && sudo systemctl disable firewalld
    • 清空iptables规则:sudo iptables -F && sudo iptables -X
    • 检查SELinux状态:getenforce,如果是Enforcing,临时关了试试:sudo setenforce 0,要永久改就编辑/etc/selinux/config把SELINUX改成disabled

3. 核对Swarm配置和Join Token

  • 在主节点执行docker info,看Swarm部分的Advertise Address是不是正确的外部IP,别是回环地址。
  • 重新生成worker节点的join命令:sudo docker swarm join-token worker,直接复制完整命令到D2/D3执行,避免手动输错token或IP。

4. 检查基础网络连通性

  • 所有节点执行ip addr,确认网卡IP和Swarm初始化用的IP一致,别绑定到了错误的网卡(比如只绑了lo接口)。
  • 在D2/D3上ping D1的IP,ping不通的话先解决基础网络问题,比如子网、网关配置。

5. 重启Docker试试

所有节点执行:

sudo systemctl restart docker

然后主节点重新初始化Swarm,再让D2/D3执行join命令。


内容的提问来源于stack exchange,提问作者Boodle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:45:43