當前位置: 首頁>>技術教程>>正文


python – Docker名稱解析[Errno -3]暫時失敗

, , , ,

問題描述

我正在關注docker tutorial,而我必須使用以下內容來構建應用程序:

docker build -t friendlyhello .

到達第4步,在暫停後出現此錯誤:

Step 4/7 : RUN pip install -r requirements.txt
 ---> Running in 7f4635a7510a
Collecting Flask (from -r requirements.txt (line 1))

Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after 
connection broken by
'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.VerifiedHTTPSConnection 
object at 0x7fe3984d9b10>: Failed to establish a new connection: 
[Errno -3] Temporary failure in name resolution',)': /simple/flask/

我不太確定此錯誤的含義以及如何解決該錯誤。

謝謝你的幫助!

最佳方案

我在Ubuntu 16.04和Docker版本17.09.0-ce中遇到了相同的問題。我認為禁用dns掩碼不是正確的解決方案。

這是我解決的方法:

對於Ubuntu

編輯/etc /default /docker並將您的DNS服務器添加到以下行:

示例
DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"

參考:Docker – Network calls fail during image build on corporate network

次佳方案

這篇文章對我也有用!

Solved by dns mask [sic] disable:

sudo vim /etc/NetworkManager/NetworkManager.conf

comment out dns=dnsmasq -> #dns=dnsmasq

sudo service network-manager restart (or reboot VM in this case)

來自:https://github.com/moby/moby/issues/26330

第三種方案

我隻是做了sudo service docker restart,但之後就奏效了。在修改配置之前絕對值得一試。

第四種方案

這很傻,但是當我收到此錯誤消息時,我已連接了VPN。

斷開VPN連接後,PIP重新開始工作。

第五種方案

我在docker-ce 17的Ubuntu 16.04.1計算機上遇到了相同的問題,它通過禁用網絡中的dns掩碼來解決。

sudo nano /etc/NetworkManager/NetworkManager.conf 

按Ctrl + O保存並輸入退出Ctrl + X

通過運行bellow命令重新啟動網絡服務。

sudo service network-manager restart

之後,如果您運行docker build命令,一切將正常運行。

第六種方案

bkasap的答案改變了我想說的係統功能。此外,因為Docker中有執行此操作的選項。做到這一點的新方法是

$ sudo vi /etc/docker/daemon.json

並添加以下內容

{
    "dns": ["8.8.8.8", "8.8.4.4"]
}

別忘了

sudo service docker restart

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/8309.html,未經允許,請勿轉載。