Docker构建时pip安装requirements.txt遇exit code:2超时问题求助
问题:Docker构建时pip安装nvidia-cudnn-cu11包超时失败
我将代码仓库克隆到新设备,该仓库基于Docker环境运行。此前曾成功构建过一次镜像,但后续执行docker build .构建新镜像时,在RUN pip install -r requirements.txt步骤出现exit code:2错误。
已尝试的操作:
- 重启Docker
- 多次执行构建命令
- 通过
set PIP_TIMEOUT=120将pip超时设置为2分钟
错误详情:
完整回溯信息显示,错误发生在安装torch依赖的nvidia-cudnn-cu11==8.5.0.96包时,出现ReadTimeoutError,连接files.pythonhosted.org超时。
我的Dockerfile内容:
# Pull base image FROM python:3.11.4-slim-bullseye # Set environment variables ENV PIP_NO_CACHE_DIR off ENV PIP_DISABLE_PIP_VERSION_CHECK 1 ENV PYTHONUNBUFFERED 1 ENV PYTHONDONTWRITEBYTECODE 1 ENV COLUMNS 80 #install Debian and other dependencies that are required to run python apps(eg. git, python-magic). RUN apt-get update \ && apt-get install -y --force-yes \ nano python3-pip gettext chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev\ && rm -rf /var/lib/apt/lists/* RUN apt-get update && apt-get install -y git RUN apt-get update && apt-get install -y libmagic-dev RUN apt-get -y update && apt-get -y upgrade && apt-get install -y --no-install-recommends ffmpeg # Set working directory for Docker image WORKDIR /code/ RUN apt-get update \ && apt-get -y install libpq-dev gcc # Install dependencies COPY requirements.txt . RUN pip install -r requirements.txt # Copy project COPY . .
requirements.txt部分内容:
six==1.16.0 sqlparse==0.4.4 sympy==1.12 termcolor==2.3.0 tiktoken==0.3.3 torch==2.0.1 tqdm==4.66.1
解决方案
1. 使用国内pip镜像源加速下载
修改Dockerfile中的pip安装命令,添加国内镜像源地址,替换官方源以提升下载速度:
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
或者提前设置环境变量全局替换源:
ENV PIP_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
2. 单独指定Torch的官方下载源
Torch及其依赖包体积较大,直接使用PyTorch官方镜像可避免第三方源的不稳定问题:
RUN pip install torch==2.0.1 -i https://download.pytorch.org/whl/cu118
(注:cu118对应CUDA 11.8版本,需根据你的环境调整版本号)
3. 合并Dockerfile中的apt-get命令减少网络请求次数
将多个分散的RUN apt-get命令合并,减少镜像构建过程中的网络交互次数,同时清理缓存优化镜像:
RUN apt-get update \ && apt-get install -y --force-yes nano python3-pip gettext chrpath libssl-dev libxft-dev \ libfreetype6 libfreetype6-dev libfontconfig1 libfontconfig1-dev git libmagic-dev ffmpeg \ && apt-get -y upgrade \ && apt-get install -y libpq-dev gcc \ && rm -rf /var/lib/apt/lists/*
4. 本地预下载依赖包后再构建
提前手动下载nvidia-cudnn-cu11==8.5.0.96包到项目目录,然后在Dockerfile中复制进镜像并安装:
COPY nvidia-cudnn-cu11-8.5.0.96.tar.gz . RUN pip install nvidia-cudnn-cu11==8.5.0.96 ./nvidia-cudnn-cu11-8.5.0.96.tar.gz \ && pip install -r requirements.txt
内容的提问来源于stack exchange,提问作者tthheemmaannii
相关产品推荐
相关产品推荐

