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

问题描述 投票:20回答:7

我正在关注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/

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

谢谢你的帮助!

python ubuntu docker pip ubuntu-16.04
7个回答
16
投票

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


12
投票

这篇文章也适合我!

解决了dns mask [sic] disable:

sudo vim /etc/NetworkManager/NetworkManager.conf

注释掉dns = dnsmasq - >#dns = dnsmasq

sudo服务网络管理器重启(或在这种情况下重启VM)

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


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
投票

我刚刚做了sudo service docker restart,之后就开始了。在跳入修改配置之前绝对值得一试。


2
投票

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

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


2
投票

bkasap的回答改变了系统的功能我会说夸大了。此外,因为docker中有选项可以做到这一点。新的方法是

$ sudo vi /etc/docker/daemon.json

并添加以下内容

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

别忘了

sudo service docker restart

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的可能优势。您只需要使用这些方法之一。

你可以阅读有关如何执行这些步骤here


0
投票

我在Windows 10 Pro上遇到了这个问题,我通过右键单击托盘中的docker图标并选择“Restart ...”解决了这个问题。花了几分钟然后网络再次正常运行。

© www.soinside.com 2019 - 2024. All rights reserved.