簡體   English   中英

Docker容器無法訪問本地網絡DNS

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM