Python Docker的名称解析[Errno-3]暂时失败

Python Docker的名称解析[Errno-3]暂时失败,python,ubuntu,docker,pip,ubuntu-16.04,Python,Ubuntu,Docker,Pip,Ubuntu 16.04,我遵循以下步骤,我必须使用以下方法构建应用程序: 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,

我遵循以下步骤,我必须使用以下方法构建应用程序:

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/
步骤4/7:运行pip安装-r requirements.txt
--->在7f4635a7510a中运行
收集瓶(来自-r requirements.txt(第1行))
之后重试(重试(总计=4,连接=None,读取=None,重定向=None))
断开的连接
“NewConnectionError(”:未能建立新连接:
[Errno-3]名称解析“,)”暂时失败:/simple/flask/
我不太清楚这个错误是什么意思,也不知道如何解决它


谢谢你的帮助

这篇文章对我也有用

已通过dns掩码[sic]禁用解决:

sudo vim/etc/NetworkManager/NetworkManager.conf

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

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


发件人:

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

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

  • 您可以指定Docker要使用的DNS服务器,或
  • 您可以在NetworkManager中禁用dnsmasq。如果您这样做,NetworkManager会将您真正的DNS名称服务器添加到/etc/resolv.conf,但您将失去dnsmasq可能带来的好处。 您只需要使用其中一种方法

  • 您可以阅读如何执行这些步骤

    我对Ubuntu16.04.1机器docker ce 17也有同样的问题。 它通过在网络中禁用dns掩码得到修复

    sudo nano /etc/NetworkManager/NetworkManager.conf 
    
    按Ctrl+O键保存并输入退出键

    通过运行以下命令重新启动网络服务

    sudo service network-manager restart
    

    在此之后,如果运行docker build命令,一切都会正常工作。

    我在Ubuntu 16.04和docker版本17.09.0-ce中遇到了同样的问题。 我认为禁用
    dnsmasq
    不是正确的解决方案

    我是这样解决的:

    用于Ubuntu

    编辑/etc/default/docker并将DNS服务器添加到以下行:

    范例

    DOCKER_OPTS="--dns 8.8.8.8 --dns 10.252.252.252"
    
    参考:

    这很愚蠢,但当我遇到这个错误时,我连接了一个VPN


    断开VPN连接后,PIP再次开始工作

    bkasap的答案改变了系统的功能,我认为这是夸张的。更进一步,因为docker中有这样做的选项。新的方法是

    $ sudo vi /etc/docker/daemon.json
    
    并添加以下内容

    {
        "dns": ["8.8.8.8", "8.8.4.4"]
    }
    
    别忘了

    sudo service docker restart
    

    我刚刚重新启动了sudo服务docker,之后它就工作了。在开始修改配置之前,绝对值得一试。

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

    对于我来说,重新启动主机解决了fedora 32上的问题,这是防火墙问题。以下命令解决了问题:

    $firewall-cmd --permanent --zone=trusted --add-interface=docker0
    
    $firewall-cmd --reload
    
    Docker build:“名称解析暂时失败” 我也得到了“名字解析的暂时失败”。我的解决方案是在docker build命令中指定网络:

    s001# docker network create example_net
    s001# docker build --network example_net -t example_image example_image
                         ^^^^^^^^^^^^^^^^^^^
    
    我还在开发笔记本上的docker配置中配置了dns:

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

    在我的Ubuntu20.04上有这个。随机的,它只是停止工作

    尝试:

    sudo service network-manager restart
    
    不起作用。然后我就这么做了:

    sudo systemctl restart docker
    

    问题解决了

    该错误意味着pip无法解析DNS名称。首先,检查Docker中的网络是否工作。运行
    docker-it--rmpython:2.7-slim/bin/bash
    ,然后尝试运行
    ping pypi.python.org
    ping-n8.8.8
    。按ctrl-D键退出或
    退出
    。如果ping失败(发布结果),那么您的网络或DNS有问题(使用操作系统详细信息和Docker版本更新您的问题)。如果它能工作,那么,好吧,我想,您在Docker或pip中遇到了一些错误-请尝试添加
    --verbose
    ,这样命令将是
    RUN pip install--verbose-r requirements.txt
    ,也许它会提供一些有用的东西。感谢您的回复。ping确实工作得很好,但是您提到的第一个命令只是给了我一个错误:未知的i in'-it'速记。使用
    --verbose
    运行时,我会看到以下内容:
    获取页面https://pypi.python.org/simple/flask/   “抬头看”https://pypi.python.org/simple/flask/“在缓存中,没有可用的缓存项
    提到的第一个命令@drdaeman失败,因为它缺少run命令。改为使用此选项:
    docker run-it--rm python:2.7-slim/bin/bash
    在构建容器之前是否在中挂起计算机?在我的笔记本电脑上,docker deamon总是在挂起后停止名称解析。当我再次唤醒笔记本电脑时,我总是需要重启执事才能让它恢复工作。这是否回答了你的问题?这对我来说很有效,但添加正确的DNS服务器却没有。来到这里,一切都不起作用。原来这也是我的问题。谢谢,我快疯了哈哈!英雄联盟这也发生在我身上!知道为什么使用DNS会导致此解析错误吗?很好,非常感谢!为什么每个人都愿意称伪装为伪装(而不仅仅是这个答案)?差异很重要——特别是对于理解。我们不想在“它起作用”之前就捣乱键。我们需要了解什么有效,为什么有效。(我意识到这是一个引文,但只需在这篇文章中搜索
    mask
    就可以了解我的观点)我在这里找到了说明:这对我来说是有效的,同时编辑/etc/docker/daemon.json不需要每隔一段时间就这样做