我在下面的图指南使用泊坞窗与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
发现你的DNS服务器的地址。
发现由运行以下命令你的DNS服务器的地址:
$: nmcli dev show | grep 'IP4.DNS' IP4.DNS[1]: 192.168.210.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:
找出你的设备的分配的IP。 您可以通过此找到
- 检查你的以太网的INET地址或WLAN中
ifconfig
- 在选择任何地址
nmcli dev show | grep 'DNS'
nmcli dev show | grep 'DNS'
在编辑DNS /etc/docker/daemon.json
(如果不存在以前是创建该文件)
{ "dns": ["your_ip_in_step_1"] }
重新启动泊坞窗: sudo service docker restart
Answer 7:
在我的情况下,与docker version 1.13.0
和docker-machine 0.9.0
下Ubuntu 16.04
我不得不修改略有Tanzaho的答案(2修改泊坞窗配置),如下所示:
登录到Ubuntu的为使用sudo权限的用户。
打开/ etc /默认/搬运工文件进行编辑:
sudo vim /etc/default/docker
添加多克以下设置。
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
保存并关闭文件。
重新启动码头工人守护进程:
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