Docker 容器没有互联网,我已经尝试了很多解决方案
Docker containers have no internet, I've tried many solutions
我在 Digital Ocean 的 Ubuntu 16.04 上有 docker 个容器 运行ning。他们工作得很好,但有一天(我认为它发生在 TOR1 Droplet Reboot 2018-02-28 16:00 UTC [Spectre and Meltdown Mitigation] 之后,但我不确定)他们他们失去了互联网连接,我不知道为什么以及如何让它工作。
我从其他答案中尝试了许多不同的解决方案,但没有成功。
我尝试了 this 问题的答案,尝试禁用 ufw,尝试重启 OS。我什至尝试更新 Docker 和 Ubuntu,希望它最终会起作用,但没有成功。
我怀疑 iptables 可能有问题,但我不知道该怎么办。
服务器上有一个名为 iptable.rules.sh 的 sh 脚本,其内容如下:
#/bin/sh
#blow away the DOCKER chain
sudo iptables -F DOCKER
#add http / https
sudo iptables -A DOCKER -p tcp --dport https -j ACCEPT -d 172.17.0.4
sudo iptables -A DOCKER -p tcp --dport http -j ACCEPT -d 172.17.0.4
#loopback for mongodb
sudo iptables -A DOCKER -p tcp --dport 27017 -j ACCEPT -d 172.17.0.2 -i lo
但是当我 运行 它时,它说:
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
我可以 运行 具有互联网连接的容器的唯一方法是使用 --net=host,但我不能,因为链接容器。
所以我很困惑并向你寻求帮助。
问题出在 Docker 更新、实例重启以及前维护者创建的 /etc/docker/daemon.json
和 {"iptables": false}
文件中。这些东西相互重叠。
我找到了解决方案 in this answer。
或更多描述 in this article.
我在 Digital Ocean 的 Ubuntu 16.04 上有 docker 个容器 运行ning。他们工作得很好,但有一天(我认为它发生在 TOR1 Droplet Reboot 2018-02-28 16:00 UTC [Spectre and Meltdown Mitigation] 之后,但我不确定)他们他们失去了互联网连接,我不知道为什么以及如何让它工作。
我从其他答案中尝试了许多不同的解决方案,但没有成功。
我尝试了 this 问题的答案,尝试禁用 ufw,尝试重启 OS。我什至尝试更新 Docker 和 Ubuntu,希望它最终会起作用,但没有成功。
我怀疑 iptables 可能有问题,但我不知道该怎么办。
服务器上有一个名为 iptable.rules.sh 的 sh 脚本,其内容如下:
#/bin/sh
#blow away the DOCKER chain
sudo iptables -F DOCKER
#add http / https
sudo iptables -A DOCKER -p tcp --dport https -j ACCEPT -d 172.17.0.4
sudo iptables -A DOCKER -p tcp --dport http -j ACCEPT -d 172.17.0.4
#loopback for mongodb
sudo iptables -A DOCKER -p tcp --dport 27017 -j ACCEPT -d 172.17.0.2 -i lo
但是当我 运行 它时,它说:
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
iptables: No chain/target/match by that name.
我可以 运行 具有互联网连接的容器的唯一方法是使用 --net=host,但我不能,因为链接容器。
所以我很困惑并向你寻求帮助。
问题出在 Docker 更新、实例重启以及前维护者创建的 /etc/docker/daemon.json
和 {"iptables": false}
文件中。这些东西相互重叠。
我找到了解决方案 in this answer。
或更多描述 in this article.