我有一个带有2个节点的docker swarm覆盖网络,即本地主机和PC上的VM。
docker network list
输出:
NETWORK ID NAME DRIVER SCOPE
26ca272f0118 bridge bridge local
48f94e0d47b8 docker_gwbridge bridge local
6ffc94e5474c host host local
o4ydpduwyfc9 ingress overlay swarm
3a177ebcdaae none null local
a3807498a383 source_default bridge local
igtysi5waw6s test-overlay-network overlay swarm
docker node list
输出:
ID HOSTNAME STATUS AVAILABILITY MANAGE STATUS ENGINE VERSION
qex25m1yhjm28ojb18yrd3my3 * node1 Ready Active Leader 19.03.13
64lsy02tvk2h6gqjdhejwvcvp node2 Ready Active Reachable 19.03.13
两个主机的输出相同。我有2个运行在localhost上的容器和2个运行在VM上的容器。我想做的是将其中一个与另一个ping通。
netstat -tuplen
命令告诉我,两个主机都正在运行docker必需的以下端口。
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp6 0 0 :::2377 :::* LISTEN 0 616456 -
tcp6 0 0 :::7946 :::* LISTEN 0 612282 -
udp 0 0 0.0.0.0:4789 0.0.0.0:* 0 613172 -
udp6 0 0 :::7946 :::* 0 612283
因此,我在所有容器中运行ifconfig
并获取其ip,然后尝试相互ping通。 eth1接口上的IP列表:
我可以从本地主机ping VM,也可以从同一主机上运行的容器ping通。但是我无法从其他主机ping通容器。可能是什么原因?