构建一个泊坞窗图像时,我有一个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。
答案 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