我已经将我的服务器(Ubuntu 18.04 LTS)从一个网络物理移动到另一个网络(所以我更改了 IP 地址/网络掩码/网关/DNS)。一旦我重新启动它,相同的 Docker 容器就无法再连接到互联网了。
这是桥接网络的配置
用户名@主机名:~$ sudo docker inspect bridge
[
{
"Name": "bridge",
"Id": "f3d9b8da0a6a3d735c9045846eae7ee34afe8c68a6873bbb8a91c2318c946629",
"Created": "2019-08-13T04:54:13.643422223+02:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"b12deba1ead80f43d09db8b5542dbfd52e0d2c340e3c36cbb537a60687e30fe0": {
"Name": "container1",
"EndpointID": "b17e3b047efaad714e922adc32cd731bbea120b8755ffc0c1c799687cf4af73d",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
这是接口的配置
用户名@主机名:~$ ip addr show
117: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:91:dc:0c:04 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
如果启动一个繁忙的盒子 username@hostname:~$ docker run -itd --name=container1 busybox
我附加到它 username@hostname:~$ docker attach container1
我 ping 世界 / # ping -w3 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss
所以没有回复,而我可以成功地ping另一个繁忙的盒子容器。
只是为了提供更多信息,这些是 busybox 容器识别的 IP 名称:
***/ # cat /etc/hosts***
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 b12deba1ead8
以及来自容器内部的路由 / # ip route show
172.17.0.0/16 dev eth0 scope link src 172.17.0.2
我可以从容器内部 ping 网关(/# ping -w 4 172.17.0.1),也可以成功 ping 我的服务器的 IP 地址(/# ping -w 4 xxx.xxx.xxx.xxx)。
显然,我对所有容器都有这个问题,不仅是busybox:例如,通过在高山码头集装箱中打开一个外壳,我也无法通过桥。
我最初的猜测是这可能是防火墙问题,但如果我“sudo ufw disable”没有任何变化。
我检查的其他可能参数是 username@hostname:~$ sudo sysctl net.ipv4.conf.all.forwarding
net.ipv4.conf.all.forwarding = 1
所以到目前为止,对我来说一切都很好。我还删除并重新安装了 docker 守护程序,但仍然是同样的问题。
问题可能是什么?任何想法?谢谢。