现象
docker多节点通过swarm组网形成集群,在容器内部之间可以正常访问,但容器内访问宿主机同网段从节点不通,也无法ping通
排查思路
docker的swarm组网默认通过udp/4789端口对外通信,部分云平台可能会直接禁用掉该接口
处理步骤
修改docker对外通信端口为其他可通信端口。
1、确认端口是否可用
#在多台机器之间都需要测试,以下为命令样例
#在机器上开通udp端口23456,若有字符串发送过来可以在该命令下查看到回显信息
nc -u -l -p 23456
#向指定机器的dup/23456发送字符
echo "abcdefgh" |nc -u -wl IP 23456
2、修改docker通信端口
#在初始化swarm网络时指定集群通信端口
docker swarm init --data-path-port=23456