Docker 镜像无法连接到互联网。我位于公司防火墙后面,并且已在 /etc/default/docker 和 /etc/resolv.conf 中完成了 DNS 操作
但是,我甚至无法访问本地网络中的内容。即:docker run busybox ping -c 1 10.[remainder_of_host_network_ip]
失败。
我已经执行了其他地方描述的重置桥接器的步骤:
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
除了对于docker -d
位,这似乎已被弃用。如果有人知道它的作用以及现在如何做到这一点,那可能会有所帮助……
wireshark 显示以下数据包重复了很多次,但从未真正解决:
43 60.451954286 02:42:ac:11:00:02 -> Broadcast ARP 42 Who has 172.17.0.1? Tell 172.17.0.2
172.17.0.1 是我的 docker0 接口。我假设 172.17.0.2 是容器。
有什么想法吗?
答案1
这iptables -t nat -F
可能是您问题的一部分。
您还取消了配置 docker bridge(ifconfig docker0 down
)——这就是 docker 容器无法找到其网关(172.17.0.1)的原因。
正常情况下,docker 桥接器将处于启动状态(您将其关闭),并且其 IP 为 172.17.0.1,这是容器上配置的默认网关。
此外,iptables -vnL -t nat
还应包括如下一行:
0 0 MASQUERADE all -- * !docker0 172.17.0.0/16 0.0.0.0/0
这可确保您网络上的主机看到您的主机 IP,而不是单个 docker 容器 IP。
可能最简单的事情就是重新启动docker,重新启动容器,然后检查是否有任何改变。