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

Docker构建过程中频繁出现软件包安装失败的问题求助

Docker构建中APT随机网络失败问题

环境与构建配置

运行环境为Debian 11笔记本,基于php:7.4-apache-buster镜像构建Docker容器,Dockerfile中包含以下APT安装及PHP扩展配置操作:

RUN apt-get update && apt-get install -y --no-install-recommends apt-utils libzip-dev libssl-dev vim \
## Zip extension
&& apt-get install -y --no-install-recommends zlib1g-dev \
&& docker-php-ext-install zip \
## gd  & other image extentions
&& apt-get install -y --no-install-recommends libpng-dev libfreetype6-dev libjpeg62-turbo-dev libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg && docker-php-ext-install -j$(nproc) gd \
&& docker-php-ext-configure exif && docker-php-ext-install -j$(nproc) exif \
## Other extensions & database utils
&& docker-php-ext-install mysqli pdo pdo_mysql

构建过程中会调用以下脚本批量安装额外软件包:

package_array=( "apt-utils" "acl" "libzip-dev" "libssl-dev" "vim" "locales" "zlib1g-dev" "libpng-dev" "libfreetype6-dev" "libjpeg62-turbo-dev" "libpng-dev" "git" "unzip" "curl" "libreoffice-base-core" "libreoffice-base-drivers" "libreoffice-core" "libreoffice-common" "libreoffice-writer" "libreoffice-calc" "libreoffice-draw" "libreoffice-impress" "python3" "ghostscript" "default-jdk" "poppler-utils" "openjdk-11-jre-headless" "cron")        
for pkt in "${package_array[@]}"; do
    apt-get update
    echo -ne "${OK}Installation of $pkt ${RESET}"
    apt-get install -y "$pkt" &>> "$deb_log_path"
    ERR_CODE=$?
    if [ $ERR_CODE -ne 0 ]; then
        echo ""
        echo -e "${FAIL}${RED_CROSS_MARK}[ERR] You will find the log here: ""$deb_log_path""${RESET}"
        echo -e "\r${FAIL}${RED_CROSS_MARK}[ERR] An error occurred installing '$pkt' (return code $ERR_CODE), exiting..${RESET}"
        exit 
    fi
    echo -e "\r${OK}${CHECK_MARK} $pkt has been installed.${RESET}"
done

问题现象

构建稳定性极差,约10次构建中有8次出现APT安装或更新失败,报错信息随机出现在不同软件包或更新环节,典型报错如下:

E: Failed to fetch http://deb.debian.org/debian/pool/main/x/xdg-utils/xdg-utils_1.1.3-1+deb10u1_all.deb  Unable to connect to deb.debian.org:http: [IP: 199.232.178.132 80]
E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?

已尝试的无效解决方案

  • 通过COPY sources.list /etc/apt/sources.list替换APT源配置文件
  • 重写resolv.conf使用公共DNS:RUN echo "nameserver 8.8.8.8" >> /etc/resolv.conf && echo "nameserver 8.8.4.4" > /etc/resolv.conf
  • 在脚本的安装循环中每次执行apt-get update
  • 将Dockerfile中所有APT相关指令合并为同一行执行
  • 在docker-compose配置中添加network_mode: "host"

临时缓解情况

移除docker-compose配置中的network_mode: "host"后,构建成功率有所提升,但问题仍未彻底解决,偶发失败情况依然存在。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:23:05