我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
Docker运行-dns 8.8.8.8 base ping google.com
Docker运行base ping google.com
Sysctl -w net.ipv4。Ip_forward =1 -在主机和容器上
我得到的是未知主机google.com。Docker 0.7.0版本
什么好主意吗?
P.S. ufw也被禁用了
我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
Docker运行-dns 8.8.8.8 base ping google.com
Docker运行base ping google.com
Sysctl -w net.ipv4。Ip_forward =1 -在主机和容器上
我得到的是未知主机google.com。Docker 0.7.0版本
什么好主意吗?
P.S. ufw也被禁用了
当前回答
对我来说,使用centos 7.4,这不是/etc/resolve.conf, iptables, iptables NAT规则或docker本身的问题。问题是主机缺少包bridge-utils, docker需要使用brctl命令来构建桥。Yum安装-y bridge-utils并重新启动docker,解决问题。
其他回答
当我的一个容器随机发生这种情况,而其他容器都很好时,我被难住了。容器至少连接到一个非内部网络,因此Compose定义没有任何问题。重启VM / docker守护进程没有帮助。这也不是DNS问题,因为容器甚至不能ping外部IP。为我解决这个问题的是重新创建docker网络。在我的例子中,docker-compose down && docker-compose up工作。
组成
这迫使我们重新构建所有容器的网络:
Docker-compose down && Docker-compose up
群模式
我认为你只是删除并重新创建服务,这将重新创建服务的网络:
Docker服务rm some-service
Docker服务创建…
如果容器的网络是外部的
只需删除并重新创建该服务的外部网络:
Docker网络rm some-external-network
Docker网络创建一些外部网络
通过以下建议修复:
[…你能试着重置一切吗?
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
它将迫使docker重新创建网桥并重新执行所有网络规则
https://github.com/dotcloud/docker/issues/866#issuecomment-19218300
似乎界面以某种方式“挂起”。
更新docker的最新版本:
上面的答案可能仍然可以帮你完成工作,但自从这个答案发布以来已经有很长一段时间了,docker现在更加完善了,所以在使用iptables和所有东西之前,一定要先尝试这些。
Sudo service docker restart或者(如果你的Linux发行版没有使用upstart) Sudo systemctl restart docker
我在Ubuntu 18.04上遇到了这个问题。然而问题出在DNS上。我所在的公司网络有自己的DNS服务器,并阻止其他DNS服务器。这是为了阻止一些网站(色情,种子,…等等)
解决你的问题
在主机上查找您的DNS 建议使用——dns your_dns 由@jobin Docker run——dns your_dns -it——name cowsay——hostname cowsay debian bash
对于Ubuntu 19.04使用openconnect 8.3进行VPN,我必须将/etc/resolve.conf符号链接到systemd中的文件(与answerby wisbucky相反)
执行ln -sf /etc/resolv.conf /run/systemd/resolve/resolv.conf
调试步骤
连接到公司VPN 在/etc/resolv.conf或/run/systemd/resolve/resolv.conf中查找正确的VPN设置 无论哪个有正确的DNS设置,我们都会将其符号链接到另一个文件 (提示:在赋值的左边放置一个设置正确的)
Docker版本:Docker版本19.03.0-rc2,构建f97efcc
用OSX的答案更新这个问题(使用Docker Machine)
如果你使用Docker Machine在OSX上运行Docker,那么下面的方法对我来说是有效的:
docker-machine restart
<...wait for it to restart, which takes up to a minute...>
docker-machine env
eval $(docker-machine env)
然后(至少在我的经验中),如果你从容器中ping google.com,一切都会很好。