![](/img/trans.png)
[英]How can I give Docker containers access to a dnsmasq local DNS resolver on the host?
[英]Docker containers can't access local network DNS
在構建一個docker鏡像時,我有一個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
10.3.2.1(files.mycompany.com的IP)
這不起作用: RUN ping files.mycompany.com
(將名稱轉換為另一個IP,而不是從主機ping相同的服務器)
由於在同一網絡上從另一台開發計算機構建容器,因此在我的計算機上無法正確設置某些內容。 這就像docker接口沒有從本地網絡接收DNS記錄?
我正在運行Ubuntu 17.04。
在您的主機中執行此操作:
cat /etc/resolv.conf
如果您看到類似127.0.0...
,則表示您的主機使用的DNS配置是一個偵聽localhost的守護程序。 Docker無法告訴您的容器使用相同的DNS,因為容器具有自己的localhost,因此docker默認使用Google DNS(8.8.8.8)。 您可以確認在容器內執行此操作: cat /etc/resolv.conf
我建議你按照這里的步驟操作,所以編輯你的/etc/docker/daemon.json
,然后把它放到:
{"dns": ["your_dns_server_ip"]}
關於/etc/default/docker
注意事項:在最新的Ubuntu版本中不再使用此文件。 相反,創建我指出的json文件。 請參閱文檔 : /etc/docker/daemon.json
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.