Docker 网络问题

Docker 网络问题

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,重新启动容器,然后检查是否有任何改变。

相关内容