使用Docker在名称解析[Errno -3]中暂时失败

时间:2017-06-26 13:45:32

标签: python ubuntu docker pip ubuntu-16.04

我跟随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/

我不太清楚这个错误意味着什么以及如何解决它。

感谢您的帮助!

12 个答案:

答案 0 :(得分:15)

我遇到了与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

答案 1 :(得分:14)

在fedora 32上,防火墙存在问题。以下命令已解决问题:

$firewall-cmd --permanent --zone=trusted --add-interface=docker0

$firewall-cmd --reload

答案 2 :(得分:12)

这篇文章也适合我!

  

由dns mask解决 [sic] 禁用:

     

sudo vim /etc/NetworkManager/NetworkManager.conf

     

注释掉dns = dnsmasq - &gt; #DNS =的dnsmasq

     

sudo service network-manager restart(或在这种情况下重启VM)

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

答案 3 :(得分:4)

我对于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命令,一切都会正常工作。

答案 4 :(得分:2)

很傻,但是当我收到此错误时,我连接了VPN。

断开VPN后,PIP再次开始工作。

答案 5 :(得分:2)

bkasap的答案改变了我认为夸张的系统功能。此外,因为Docker中有执行此操作的选项。做到这一点的新方法是

$ sudo vi /etc/docker/daemon.json

并添加以下内容

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

别忘了

sudo service docker restart

答案 6 :(得分:2)

我刚做过sudo service docker restart,此后就奏效了。在进入修改配置之前绝对值得一试。

答案 7 :(得分:2)

在我的Ubuntu 20.04上刚刚进行了此操作。随机地,它只是停止工作了!

尝试:

sudo service network-manager restart

没有工作。然后我就这样做了:

sudo systemctl restart docker

问题已解决!

答案 8 :(得分:1)

此错误表示您的Docker容器无法访问您的网络。 从systemd版本220开始,给定网络的转发设置(net.ipv4.conf..forwarding)默认为关闭。此设置可防止IP转发。它还与Docker在容器中启用net.ipv4.conf.all.forwarding设置的行为相冲突。

如果您的容器需要解析网络内部的主机,则公共名称服务器将不够用。你有两个选择:

  1. 您可以为Docker指定要使用的DNS服务器,或
  2. 您可以在NetworkManager中禁用dnsmasq。如果这样做,NetworkManager会将您的真实DNS名称服务器添加到/etc/resolv.conf,但您将失去dnsmasq的可能优势。 您只需要使用其中一种方法。
  3. 您可以阅读有关如何执行这些步骤here

    的信息

答案 9 :(得分:1)

Docker构建:“名称解析临时失败”

我也遇到了“名称解析暂时失败”的问题。我的解决方案是在docker build命令上指定网络:

s001# nano /etc/docker/daemon.json
{
  "dns": ["8.8.8.8"]
}
s001# systemctl restart docker

我还在开发笔记本的docker config上配置了dns:

import cv2
from google.colab.patches import cv2_imshow

from google.colab import files
uploaded = files.upload()

lena.jpg(image/jpeg) - 91814 bytes, last modified: n/a - 100% done

Saving lena.jpg to lena.jpg

img = cv2.imread('lena.jpg', 0)

print(img)

cv2_imshow(img)

cv2.imwrite('C:/Users/borby/Desktop/image',img)

答案 10 :(得分:0)

我在Windows 10 Pro上遇到了这个问题,我通过右键单击任务栏中的docker图标并选择“重新启动...”来解决了该问题。花了几分钟,然后网络又恢复了正常运行。

答案 11 :(得分:0)

对我来说,重新启动主机可以解决此问题