2017-06-26 39 views
8

我正在關注的docker tutorial和我的一部分,我必須使用構建應用程序:名稱解析暫時性故障[錯誤-3]與碼頭工人

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/ 

我不太清楚這是什麼錯誤意味着,我該如何去解決它。

感謝您的幫助!

+2

該錯誤意味着pip無法解析DNS名稱。首先,檢查Docker中的網絡是否可用。運行'docker -it -rm python:2.7-slim/bin/bash',然後嘗試運行'ping pypi.python.org'和'ping -n 8.8.8.8'。用ctrl-D或exit退出。如果ping失敗(發佈結果),那麼您的網絡或DNS有問題(使用操作系統詳細信息和Docker版本更新您的問題)。如果它有效,那麼,我想,你已經遇到了Docker或pip的一些bug - 嘗試添加'--verbose',這樣命令將會是'RUN pip install --verbose -r requirements.txt',也許它會提供一些有用的東西。 – drdaeman

+0

感謝您的回覆。 ping確實工作正常,但是你提到的第一個命令,只是給了我錯誤:我在'-it'中不知名的簡寫。 當使用'--verbose'運行時,我得到以下內容: '獲取頁面https://pypi.python.org/simple/flask/ 查找「https://pypi.python.org/simple/flask /「在緩存中 沒有可用的緩存條目 – monadoboi

回答

4

這篇文章對我也有幫助!

Solved by dns mask 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

0

這個錯誤意味着你的泊塢容器無法訪問您的網絡。 從systemd版本220開始,給定網絡(net.ipv4.conf..forwarding)的轉發設置默認爲關閉。此設置可防止IP轉發。它也與Docker在容器中啓用net.ipv4.conf.all.forwarding設置的行爲相沖突。

如果您的容器需要解析網絡內部的主機,公用名稱服務器將不夠用。你有兩個選擇:

  1. 您可以指定DNS服務器泊塢窗使用,或
  2. 可以NetworkManager中禁用的dnsmasq。如果你這樣做,NetworkManager會將你的真正的DNS域名服務器添加到/etc/resolv.conf中,但是你將失去dnsmasq的可能的好處。 您只需要使用這些方法之一。

你可以閱讀有關如何執行這些步驟here

2

我有與Ubuntu 16.04.1機同樣的問題,爲碼頭工人-CE 17 它得到了由網絡中禁用DNS面罩固定。

sudo nano /etc/NetworkManager/NetworkManager.conf 

按Ctrl + O保存和運行波紋管命令輸入出口按Ctrl + X

重新啓動網絡服務。

sudo service network-manager restart 

之後,如果你運行docker build命令,一切都會正常工作。

2

我得到了與Ubuntu 16.04和Docker 17.09.0-ce版本相同的問題。 我不認爲禁用DNS掩碼是正確的解決方案。

這是我如何解決它:

爲Ubuntu

編輯/ etc /默認/泊塢窗和你的DNS服務器添加到以下行:

DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"

參考編號: 參考:
0

這很愚蠢,但我有一個VPN連接,當我得到這個錯誤。

斷開VPN後,PIP再次開始工作。