You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

构建Docker镜像时Conda更新失败,下载字节与Content-Length不匹配

问题:Docker构建时Conda下载字节数与Content-Length不匹配

在OSX系统使用Docker Desktop构建Docker镜像时,Conda提示下载字节数与Content-Length不匹配。对应的URL可正常访问,但执行docker build时始终出现该问题。已尝试更换conda-forge等不同通道,仍无法解决,且每次下载的字节数都不相同,怀疑是Docker的网络连接存在问题。

错误信息

#0 124.4 CondaError: Downloaded bytes did not match Content-Length
#0 124.4   url: https://conda.anaconda.org/pytorch/linux-64/pytorch-1.11.0-py3.8_cuda11.3_cudnn8.2.0_0.tar.bz2
#0 124.4   target_path: /miniconda/pkgs/pytorch-1.11.0-py3.8_cuda11.3_cudnn8.2.0_0.tar.bz2
#0 124.4   Content-Length: 1097104794
#0 124.4   downloaded bytes: 124742074
#0 151.7 CondaError: Downloaded bytes did not match Content-Length
#0 151.7   url: https://repo.anaconda.com/pkgs/main/linux-64/python-3.8.5-h7579374_1.conda
#0 151.7   target_path: /miniconda/pkgs/python-3.8.5-h7579374_1.conda
#0 151.7   Content-Length: 51673600
#0 151.7   downloaded bytes: 19806597

使用的Dockerfile

FROM nvidia/cuda:12.0.0-runtime-ubuntu22.04
WORKDIR /app

RUN apt-get update && apt-get install -y wget git && apt-get clean

RUN git clone https://github.com/db0/nataili.git .
# Check out a specific version of the above repository
RUN git checkout 6c2f1862bacf25b6bc74e95e3174ca45a116f85b 
RUN echo "boto3>=1.21.32">>requirements.txt

# Download and install Miniconda
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
RUN bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda

# Add miniconda to the PATH
ENV PATH=/miniconda/bin:$PATH

# Update conda and install any necessary packages
RUN conda update --name base --channel defaults conda && \
    conda env create -f /app/environment.yaml --force && \
    conda clean -a -y

# Install conda environment into container so we do not need to install every time.
ENV ENV_NAME ldm

COPY ecs_run.py /app/

SHELL ["conda", "run", "-n", "ldm", "/bin/bash", "-c"]

ENTRYPOINT ["conda", "run", "--no-capture-output", "-n", "ldm", "python", "ecs_run.py"]

解决方向及操作步骤

1. 检查Docker Desktop网络配置

  • 打开Docker Desktop偏好设置,进入Resources > Network
  • 关闭代理(如果开启),或切换代理模式为自动
  • 勾选"Use the Docker daemon's DNS server",避免DNS解析异常

2. 增加Conda下载超时与重试次数

在Dockerfile的conda update命令前添加以下配置,提升Conda的网络容错性:

RUN conda config --set remote_connect_timeout_secs 60 \
    && conda config --set remote_max_retries 5 \
    && conda config --set remote_read_timeout_secs 120

3. 采用离线构建方式

  • 本地手动下载Miniconda安装包和所需Conda依赖包,放入构建上下文目录
  • 修改Dockerfile,使用本地文件替代在线下载:
    # 替换原wget命令,用COPY复制本地文件
    COPY Miniconda3-latest-Linux-x86_64.sh /app/
    RUN bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda
    
    也可在本地用conda pack打包完整环境,复制到容器中直接解压使用。

4. 调整Docker构建网络参数

执行构建命令时,使用宿主机网络模式,绕过Docker的网络隔离:

docker build --network=host -t your-image-tag .

注:OSX下Docker的host网络依赖虚拟机,修改后需重启Docker Desktop生效。

5. 清理Docker构建缓存

避免缓存的损坏文件干扰构建,执行:

docker build --no-cache -t your-image-tag .

内容的提问来源于stack exchange,提问作者Spoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 12:19:59