我让它正常工作,但现在它停了。我尝试了以下命令,但没有效果:

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也被禁用了


当前回答

用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,一切都会很好。

其他回答

在windows(8.1)我杀死了virtualbox接口(通过任务管理),它解决了这个问题。

当我尝试在Ubuntu上使用Docker-Compose建立一个项目时,也遇到了这样的问题。

Docker根本无法访问互联网,当我试图ping任何IP地址或nslookup一些URL时,它总是失败。

我尝试了上面描述的所有可能的DNS解析解决方案,但都无济于事。

我花了一整天的时间试图找出到底发生了什么,最后发现所有问题的原因都是防病毒软件,尤其是它的防火墙,出于某种原因阻止了Docker获取IP地址和端口。

当我禁用它时,一切都很好。

所以,如果你安装了防病毒软件,但没有任何帮助解决这个问题-问题可能是防病毒软件的防火墙。

对我来说,我的问题是没有安装iptables-services,这对我来说是有效的(CentOS):

sudo yum install iptables-services
sudo service docker restart

当我的一个容器随机发生这种情况,而其他容器都很好时,我被难住了。容器至少连接到一个非内部网络,因此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容器时,没有显式地提到——network标志,它连接到它的默认网桥网络,这禁止连接到外部世界。为了解决这个问题,我们必须创建自己的网桥网络(用户定义的网桥),并且必须使用docker run命令显式地提到它。

docker network create --driver bridge mynetwork
docker run -it --network mynetwork image:version