Docker构建时RUN apt-get update执行失败,退出码100
问题分析
构建Docker镜像时apt-get update报错退出码100,核心原因是Ubuntu官方源的索引文件下载不完整,文件大小与哈希校验不匹配,大概率是网络访问不稳定或源镜像正在同步导致。同时你的Dockerfile存在可优化点,能降低这类问题的发生概率。
解决方案
1. 替换为国内Ubuntu源
在Dockerfile开头添加源替换步骤,用国内镜像(如阿里云)替代官方源,提升下载稳定性:
FROM ubuntu:latest as base # 替换为阿里云Ubuntu源 RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list RUN sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list # 合并apt命令,减少分层并清理缓存 RUN apt-get update && apt-get -y install --no-install-recommends \ ssh \ python3-pip \ htop \ libpq-dev \ cmake \ libopenmpi-dev \ python3-dev \ zlib1g-dev \ libgl1-mesa-dev \ && rm -rf /var/lib/apt/lists/* RUN pip3 install --upgrade pip setuptools RUN useradd -ms /bin/bash selfplay USER selfplay ENV PATH="/home/selfplay/.local/bin:${PATH}" WORKDIR /app COPY --chown=selfplay:selfplay ./app/requirements.txt /app RUN pip3 install -r /app/requirements.txt --no-cache-dir COPY --chown=selfplay:selfplay ./app . ENV PYTHONIOENCODING=utf-8 ENV LC_ALL=C.UTF-8 ENV LANG=C.UTF-8 CMD ["bash"]
2. 关键优化说明
- 合并apt命令:将多次
apt-get install合并为一个,仅执行一次apt-get update,避免重复更新索引;添加--no-install-recommends减少冗余依赖;最后清理/var/lib/apt/lists/*缩小镜像体积。 - 修复ENV错误:原Dockerfile最后一行
ENV export LANG=C.UTF-8写法错误,直接改为ENV LANG=C.UTF-8即可。 - pip清理缓存:安装Python包时添加
--no-cache-dir,避免缓存占用镜像空间。
3. 临时应急方案
- 清理Docker构建缓存后重新构建:
docker-compose build --no-cache - 检查本地网络连接,确保能正常访问Ubuntu源服务器,或切换网络环境后重试。
内容的提问来源于stack exchange,提问作者Samiel
相关产品推荐
相关产品推荐

