Docker容器无法访问本地网络DNS

时间:2017-06-07 10:26:03

标签: docker dns

构建一个泊坞窗图像时,我有一个curl命令可以拉下文件:

RUN curl -L http://files.mycompany.com/ -o file.war

files.mycompany.com是仅可从公司网络内访问的服务器。我可以从我的主机上访问此服务器,但如果我使用该名称,则不能从docker容器中访问此服务器(IP工作正常)。

这有效:RUN ping google.com

这有效:RUN ping 10.3.2.1(IP文件.mycompany.com)

这不起作用:RUN ping files.mycompany.com(将名称转换为另一个IP,而不是从主机ping同一服务器)

由于在同一网络上从另一台开发计算机构建容器,因此在我的计算机上无法正确设置某些内容。它就像docker接口没有从本地网络接收DNS记录?

我正在运行Ubuntu 17.04。

1 个答案:

答案 0 :(得分:3)

在您的主持人中执行此操作:

cat /etc/resolv.conf

如果您看到类似127.0.0...的内容,则表示您的主机使用的DNS配置是一个侦听localhost的守护程序。 Docker无法告诉您的容器使用相同的DNS,因为容器拥有它自己的localhost,因此docker默认使用Google DNS(8.8.8.8)。您可以确认在内部容器中执行此操作:cat /etc/resolv.conf

我建议您按照here步骤进行操作,因此请修改/etc/docker/daemon.json,并将其放入:

{"dns": ["your_dns_server_ip"]}

关于/etc/default/docker的注意事项:在最新的Ubuntu版本中不再使用此文件。相反,创建我已经指出的json文件。请参阅the docs/etc/docker/daemon.json