我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:
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也被禁用了
当前回答
我在Ubuntu 18.04上遇到了这个问题。然而问题出在DNS上。我所在的公司网络有自己的DNS服务器,并阻止其他DNS服务器。这是为了阻止一些网站(色情,种子,…等等)
解决你的问题
在主机上查找您的DNS 建议使用——dns your_dns 由@jobin Docker run——dns your_dns -it——name cowsay——hostname cowsay debian bash
其他回答
当我的一个容器随机发生这种情况,而其他容器都很好时,我被难住了。容器至少连接到一个非内部网络,因此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网络创建一些外部网络
重启docker的方法不是手动,而是使用service或systemctl命令:
service docker restart
or
systemctl restart docker
在分角上, 我的问题是,在启动docker服务之前,我没有安装并启动iptables。在启动docker服务之前,请确保iptables服务已启动并运行。
用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,一切都会很好。
最近几天我也遇到了类似的问题。对我来说,原因是systemd、docker和我的托管提供商的组合。我正在运行最新的CentOS(7.7.1908)。
我的主机提供程序自动为systemd-network生成配置文件。从CentOS 7的当前版本systemd 219开始,systemd-network控制了与网络相关的sysctl参数。Docker似乎与这个版本不兼容,并且每次容器启动时都会重置IP-Forwarding标志。
我的解决方案是在提供者生成的配置文件的[Network]部分中添加IPForward=true。这个文件可能在几个地方,最有可能在/etc/systemd/network中。
这个过程在官方docker文档https://docs.docker.com/v17.09/engine/installation/linux/linux-postinstall/#ip-forwarding-problems中也有描述