2017-04-25 42 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; }; 

}