问题描述
我正在关注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/
我不太确定此错误的含义以及如何解决该错误。
谢谢你的帮助!
最佳方案
我在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
次佳方案
这篇文章对我也有用!
Solved by dns mask [sic] disable:
sudo vim /etc/NetworkManager/NetworkManager.conf
comment out dns=dnsmasq -> #dns=dnsmasq
sudo service network-manager restart (or reboot VM in this case)
来自:https://github.com/moby/moby/issues/26330
第三种方案
我只是做了sudo service docker restart
,但之后就奏效了。在修改配置之前绝对值得一试。
第四种方案
这很傻,但是当我收到此错误消息时,我已连接了VPN。
断开VPN连接后,PIP重新开始工作。
第五种方案
我在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命令,一切将正常运行。
第六种方案
bkasap的答案改变了我想说的系统功能。此外,因为Docker中有执行此操作的选项。做到这一点的新方法是
$ sudo vi /etc/docker/daemon.json
并添加以下内容
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
别忘了
sudo service docker restart