在Docker容器中使用pip会导致ReadTimeoutError

时间:2018-06-13 22:04:53

标签: docker pip

我尝试通过pip安装软件包。但是,每次使用需要Internet连接的pip(甚至是下面的升级)都会导致ReadTimeoutError。我在另一个系统上运行的基本Dockerfile如下:

FROM python:3-alpine
RUN wget google.com
RUN pip3 -V
RUN pip3 install --upgrade pip

第二行显示我有一个互联网连接。输出:

Connecting to google.com (216.58.206.14:80)
Connecting to www.google.com (108.177.126.103:80)
index.html           100% |*******************************| 10582   0:00:00 ETA

第三行显示已安装pip。输出:

pip 10.0.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)). 

然而,第四行导致:

Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ReadTimeoutError("HTTPSConnectionPool(host='pypi.org', port=443): Read timed out. (read timeout=100.0)",)': /simple/pip/

我已经尝试过:

  • 重新安装Docker

  • 使用“--default-timeout = 100”增加默认超时(这就是上述错误消息中读取超时为100的原因。)

我读到当你在代理服务器后面时,pip存在问题,这不是这里的情况。你有什么其他的想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:0)

有两种可能的解决方案:

  1. 这可能不是网络问题: 我刚刚在另一个地方找到了解决方案: 请在 From 图层
  2. 之后添加两行
ENV http_proxy http://proxy-chain.xxx.com:911/
ENV https_proxy http://proxy-chain.xxx.com:912/ 

或更改为另一个镜像源: 在 pip安装

之前添加以下命令
RUN mkdir ~/.pip && \  
cd ~/.pip/  && \  
echo "[global] \ntrusted-host =  pypi.douban.com \nindex-url = http://pypi.douban.com/simple" >  pip.conf  
  1. 如果是由于网络原因,则连接源可能需要一些时间: 尝试在 pip安装之后添加以下限制:
--default-timeout=1000 --no-cache-dir