【发布时间】:2020-01-16 22:43:04
【问题描述】:
我是第一次在 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,它可以无缝运行。
【问题讨论】:
-
请确保您的网络中没有其他 172.17.0.2/16 vpn。
-
我不知道,@gile。
-
您确定这不仅仅是 ICMP 问题吗?您是否尝试过诸如 SSH 或 http 之类的高级连接?
-
我试过 curl 和 wget。
-
您使用的是陈旧的传统桥接网络,它有一些特点。您应该
docker network create自定义网络(默认选项很好),docker run --net该网络上的两个容器,它们将能够使用彼此的--name作为主机名。完成此操作后,永远不要查找容器的私有 IP 地址。
标签: linux docker centos docker-network