无法安装Ubuntu的码头工人,容器内的PIP封装无法安装Ubuntu的码头工人,容器内的PIP封装

2019-05-13 05:27发布

我在下面的图指南使用泊坞窗与Python应用程序,但是当搬运工起床命令

RUN pip install -r requirements.txt

我收到以下错误信息:

Step 3 : RUN pip install -r requirements.txt
 ---> Running in fe0b84217ad1
Collecting blinker==1.3 (from -r requirements.txt (line 1))
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'ProtocolError('Connection aborted.', gaierror(-2, 'Name or service not known'))': /simple/blinker/

这种重复几次,然后我得到另一条消息:

Could not find any downloads that satisfy the requirement blinker==1.3 (from -r requirements.txt (line 1))
  No distributions at all found for blinker==1.3 (from -r requirements.txt (line 1))

因此,出于某种原因PIP不能从一个码头工人容器内访问任何包。 有什么我需要做的,允许其上网吗?

然而PIP正常工作的搬运工容器的外面安装的东西,甚至是确切的包(工作得很好blinker==1.3 ),所以这不是问题。 另外这个问题不是特定于该包。 我得到任何同一问题的pip install命令的任何软件包。

有没有人有任何想法,这是怎么回事呢?

Answer 1:

你的问题来自于码头工人没有使用正确的DNS服务器的事实。 您可以通过三种不同的方式解决这个问题:

1.添加谷歌DNS到您的本地配置

修改/etc/resolv.conf中并在最后添加以下行

# Google IPv4 nameservers nameserver 8.8.8.8 nameserver 8.8.4.4

如果要添加其他DNS服务器,看看这里 。

但是这种变化不会是永久性的(见这个线程 )。 为了使其永久: $ sudo nano /etc/dhcp/dhclient.conf取消注释并编辑与前面加上域名服务器行: prepend domain-name-servers 8.8.8.8, 8.8.4.4;

重新启动的dhclient: $ sudo dhclient

2.修改泊坞窗配置

由于在文档中解释说 :

在桌面上运行Ubuntu或者Ubuntu的衍生系统通常使用127.0.0.1作为/etc/resolv.conf文件默认的域名服务器。

要指定由码头工人使用的DNS服务器:

1. Log into Ubuntu as a user with sudo privileges.

2. Open the /etc/default/docker file for editing :

    $ sudo nano /etc/default/docker

3. Add the following setting for Docker.

    DOCKER_OPTS="--dns 8.8.8.8"

4. Save and close the file.

5. Restart the Docker daemon :

    $ sudo systemctl restart docker

3.使用参数,当您运行多克

当您运行泊坞窗,只需添加以下参数: --dns 8.8.8.8



Answer 2:

我有同样的问题,它困扰我一段时间,我尝试了很多解决方案的网上,但无济于事。 不过,我终于解决了它,如下所示:

运行:

Ubuntu 16.04 
docker Server 18.03.0-ce
  1. 发现你的DNS服务器的地址。

    发现由运行以下命令你的DNS服务器的地址:

     $: nmcli dev show | grep 'IP4.DNS' IP4.DNS[1]: 192.168.210.2 
  2. 更新泊坞窗守护

    创建于泊坞窗配置文件/etc/docker/daemon.json.如果你不已经有一个 )和下面的内容添加到文件中:

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

    数组的第一个项目是你的网络的DNS服务器,第二个是谷歌的DNS服务器作为后备,如果你的网络的DNS不可用时。

    保存文件,然后重新启动搬运工服务

     $: sudo service docker restart 


Answer 3:

OK,重新启动我的码头工人,机器解决问题。 感谢 - ismailsunni

这是我的解决方案:

docker-machine restart <machine-name>


Answer 4:

对我来说,只是重新启动码头工人守护进程的帮助。

service docker restart


Answer 5:

对于Ubuntu用户

您需要在泊坞窗的配置添加新的DNS地址

sudo nano /lib/systemd/system/docker.service

ExecStar后添加DNS。

--dns 10.252.252.252 --dns 10.253.253.253

看起来应该:

ExecStart=/usr/bin/dockerd -H fd:// --dns 10.252.252.252 --dns 10.253.253.253

然后做:

systemctl daemon-reload
sudo service docker restart

应该管用。



Answer 6:

对我来说,我无法安装PIP由于未正确配置泊坞窗的DNS。 我已经尝试了上述步骤,但是,在配置搬运工DNS到谷歌DNS不适合我的笔记本电脑工作。 码头工人的DNS可以,如果我设置其DNS到我的笔记本电脑的IP分配进行适当配置只。

如果您使用Ubuntu,你可以使用下面的步骤来配置码头工人的DNS:

  1. 找出你的设备的分配的IP。 您可以通过此找到

    • 检查你的以太网的INET地址或WLAN中ifconfig
    • 在选择任何地址nmcli dev show | grep 'DNS' nmcli dev show | grep 'DNS'
  2. 在编辑DNS /etc/docker/daemon.json (如果不存在以前是创建该文件)

     { "dns": ["your_ip_in_step_1"] } 
  3. 重新启动泊坞窗: sudo service docker restart



Answer 7:

在我的情况下,与docker version 1.13.0docker-machine 0.9.0Ubuntu 16.04我不得不修改略有Tanzaho的答案(2修改泊坞窗配置),如下所示:

  1. 登录到Ubuntu的为使用sudo权限的用户。

  2. 打开/ etc /默认/搬运工文件进行编辑:

     sudo vim /etc/default/docker 
  3. 添加多克以下设置。

     DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4" 
  4. 保存并关闭文件。

  5. 重新启动码头工人守护进程:

     sudo service docker restart 


Answer 8:

作为一个码头工人的新手,我有这样的表现出来,这样,当我在教程多克尔以下问题:

https://docs.docker.com/get-started/part2

我使用公司局域网上多克尔17.03.1策。

我查和双重检查我的DNS设置。 我已经使用配置,我会在我的整个互联网的搜索中发现的DNS的各种方式。 一些在启动时造成的错误。 我在用于配置DNS最终解决的方法是在一个以上,其中DNS经由在/ etc /搬运工目录中的文件daemon.json配置上述链路的故障排除的Linux部分。

不过,我仍然有同样的问题。 什么终于解决了这个问题对我来说是通过http_proxy和https_proxy环境变量代理的配置 。 我让他们在我的Dockerfile规定,但我忽略了RUN PIP命令之前这样做。

尽管这似乎是一个DNS问题,移动这些ENV命令提前运行命令所做的区别我。 如果这是对这个问题的人有帮助。



Answer 9:

我不知道原因,但这个错误是指在点子试图解决/simple/blinker/为DNS主机名而不是pypi.python.org部分,这似乎很奇怪,因为我甚至可以不上来的任何URL对于这urlparse可以返回这样的字符串作为主机名的一部分。 我会检查是否存在一些问题, ~/.pip/pip.conf



Answer 10:

我需要=主机添加--network到我的搬运工构建命令:

docker build --network=host -t image_name .


Answer 11:

让它运行。 有时PyPI将是具有被闹哄哄地把你的脸使你认为这是打破了连接问题。 只是可以肯定,让它滚,你会发现它的作品出来为自己。

底线,尽管这些红色的错误线,是“成功建成了”

$ docker build .
Sending build context to Docker daemon 2.048 kB
Step 1 : FROM docker-registry.aws.example.com:5000/cmcrc/python2:20160517120608
 ---> 1e5034711aa9
Step 2 : RUN pip install prometheus-client requests
 ---> Running in f3c580fc93ae
Collecting prometheus-client
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8610>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d87d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8990>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8b50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe15a1d8d10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/prometheus-client/
  Downloading prometheus_client-0.0.13.tar.gz
Collecting requests
  Retrying (Retry(total=4, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9d4d0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=3, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9da10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=2, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dc50>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=1, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9de10>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Retrying (Retry(total=0, connect=None, read=None, redirect=None)) after connection broken by 'NewConnectionError('<pip._vendor.requests.packages.urllib3.connection.HTTPConnection object at 0x7fe159e9dfd0>: Failed to establish a new connection: [Errno -2] Name or service not known',)': /pypi/requests/
  Downloading requests-2.10.0-py2.py3-none-any.whl (506kB)
Building wheels for collected packages: prometheus-client
  Running setup.py bdist_wheel for prometheus-client: started
  Running setup.py bdist_wheel for prometheus-client: finished with status 'done'
  Stored in directory: /root/.cache/pip/wheels/04/94/f5/b803b2ff65e8344e99ca99b7f7cb8194224017167809a32b78
Successfully built prometheus-client
Installing collected packages: prometheus-client, requests
Successfully installed prometheus-client-0.0.13 requests-2.10.0
 ---> 19c5e3cfe08f
Removing intermediate container f3c580fc93ae
Successfully built 19c5e3cfe08f


Answer 12:

我有错误的相同problem.The原因是代理。

所以,我编辑Dockerfile以下

RUN pip install -r /app/requirements.txt --proxy=http://user:pass@addr:port


Answer 13:

配置DNS泊坞窗向谷歌DNS(8.8.8.8)或10.0.0.2没有在我公司的工作环境。

运行:$ @钻8.8.8.8 www.amazon.com或@ 10.0.0.2证实了这一点。

为了找到一个DNS,将工作我跑:$钻www.amazon.com,它给了我,我的网络中使用的DNS IP。

然后,我用下面的步骤来配置码头工人的DNS设置在Ubuntu。

在/etc/docker/daemon.json更改后的DNS

{
    "dns": ["the DNS ip from step1"]
}

Restart docker: sudo service docker restart


Answer 14:

进出口新的码头工人,并尝试了所有的方法在这里被提及,但仍然没有得到它的权利。 泊坞窗版本是18,和Ubuntu的版本是16。这个方法我试过: - 首先,我是建设有公司的Internet网络泊坞窗。 这个网络阻止某些网站或某些事物如何didnt这里顺利。 所以,第二,我连接到我自己的网络(其中即时通讯使用的手机,例如)和审判。 事情进展的权利。 requirement.txt已成功安装,以及码头工人是构建。



Answer 15:

对我来说,它是由连接到我的大学VPN引起的。 断开“解决”问题。



文章来源: Can't install pip packages inside a docker container with Ubuntu