我是第一次在 Centos 中使用 Docker。
在部署两个容器时,我发现我遇到了互联网路由问题,然后我发现我什至无法让它们相互通信(尽管位于默认的bridge
网络上)。
在一个容器中会发生这种情况:
/ # ip a | grep 172
inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
/ # ping 172.17.0.3
PING 172.17.0.3 (172.2.0.3): 56 data bytes
^C
--- 172.17.0.3 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
在另一个中,相同的行为:
/ # ip a | grep 172
inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
/ # ping 172.17.0.2
PING 172.17.0.2 (172.2.0.2): 56 data bytes
^C
--- 172.2.0.2 ping statistics ---
3 packets transmitted, 0 packets received, 100% packet loss
并且它们位于同一网络中:
$ docker inspect 91767dd3adfa | grep -i networkid
"NetworkID": "d36d28507f9cc3f6c40437330af3778c117d303e106de0b3b43ad7919d2791c7",
$ docker inspect a393490d8d02 | grep -i networkid
"NetworkID": "d36d28507f9cc3f6c40437330af3778c117d303e106de0b3b43ad7919d2791c7",
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
d36d28507f9c bridge bridge local
f32f4c8d6187 host host local
5693790b1713 none null local
为什么会发生这种情况?我在 Ubuntu 和 MacOS 中使用过 Docker,它可以无缝运行。
最佳答案
我在这里看到的是,这完全是你的错误,机器的IP在网络172.17.0.0/16中 但您尝试 ping 位于 172.2.0.0/16 的计算机,因此它将无法工作,因为具有此网络的计算机超出了范围,而且现有计算机的 IP 不是您向其发送 ping 请求的 IP。
关于linux - 同一网络中的 Docker 容器无法相互通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59778892/