我在运行docker容器时遇到了一个有趣的问题:出乎意料的是,我无法从容器中解析DNS。
下面是一个概要:
-
什么都解决不了;apt-get、pip、一次性ping容器等。运行
docker run -it --dns=8.8.8.8 ubuntu ping www.google.com
会产生带有和不带有--dns
标志的ping: unknown host www.google.com
。 -
我可以从集装箱内部和外部达到8.8.8.8。
docker run -it ubuntu ping 8.8.8.8
起作用。 -
我已经通过编辑
/etc/sysconfig/docker
添加DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.8.4"
和在运行时在容器上设置--dns 8.8.8.8
标志,将容器配置为使用8.8.8.8、8.8.8.4和我的本地网络DNS服务器(以各种排列)。在每次变化之间运行CCD_ 8。 -
ip_forward
被启用。(见此处) -
我已经按照此处的指定进行了完全重置。
我正在运行Fedora 21,docker客户端1.5.0版本。
有什么想法吗?我完全不知道是什么阻碍了docker成功访问互联网。
他们在1.8中解决了这个问题:https://github.com/docker/docker/issues/13381干杯
在所有这些之后,完全重新启动解决了问题——尽管这仍然不能解决问题。
如果有人知道真正的原因是什么,我仍然很好奇,但现在问题已经解决了。
您可以在docker映像中安装dig
之类的工具来解决问题。
在/etc/hosts
文件中使用静态主机,使apt-get在docker映像中运行。将这些行添加到主机文件:
213.32.5.7 debian.mirrors.ovh.net
141.76.2.4 ftp.de.debian.org
217.196.149.233 mirror-conova-security.debian.org
212.211.132.250 lobos.debian.org
212.211.132.250 security.debian.org
5.153.231.4 http.debian.net
151.101.12.204 cdn-fastly.deb.debian.org
151.101.12.204 security-cdn.debian.org