2017-04-25 83 views
0

我最近有Docker版本17.04-CE的主机名解析问题,我不确定是什么导致它。我目前有Docker安装程序不会在运行时使用任何选项,但最近当通过域名连接时,我的容器不能访问谷歌和互联网上的任何其他主机(IPV4正常工作,我可以ping外部IP)。Docker DNS没有看到外部服务器

我已经将dns:8.8.8.8添加到docker-compose.yml中用于服务,这是一个bandaid,但是当使用任何其他docker-compose文件(例如laradock)时,我无法ping或卷曲外部服务器。我仍然可以卷曲其他码头实例,并且实际上可以在我的Intranet中卷曲服务器。在容器内手动更改/etc/resolv.conf工作,但我需要它来开箱即用。另外,如果我通常使用docker run启动容器,则可以按预期方式运行示例容器bash功能。

泊坞窗,撰写跑的resolv.conf(码头工人,组成了-d nginx的MySQL的& &泊坞窗,组成高管工作区猫的/etc/resolv.conf) - 不工作

search machines.redacted.ca it.redacted.ca services.redacted.ca 
apps.redacted.ca 
nameserver 127.0.0.11 
options ndots:0 

香草码头工人的resolv.conf (泊坞窗运行 - 它的MySQL平google.ca) - 做工精细

# Generated by resolvconf 
search machines.redacted.ca it.redacted.ca services.redacted.ca 
apps.redacted.ca 
nameserver 192.168.5.5 #Internal DNS server 
nameserver 8.8.8.8 

回答

0

对于我来说,它结束了,我的内部DNS服务器是分块递归DNS查询。通过在调试模式下设置docker,然后监控docker和dns服务器日志,我追踪了这个bug。 Docker似乎正在发送DNS查询,但它看起来像Bind9吐出关于拒绝递归查询的错误。我GOOGLE了这个问题,并改变了下面的设置,一切都重新开始。我将以下内容添加到bind9配置中,并且它工作正常。

奇怪的是,我的一位同事正在使用相同的methodoligy,但查询对他们来说工作正常。他正在运行一个不同的发行版,然后是一个较旧版本的docker和docker-compose。

Named.conf.options:

options { 
    ... 




    allow-recursion { all; }; 

}