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

容器执行apt update返回错误码,寻求技术解决方案

解决Docker构建PHP镜像时apt update执行Post-Invoke脚本报错问题

问题场景

基于Slim Framework搭建Docker容器环境,首次构建正常,但删除容器及镜像重新构建时,Dockerfile中的apt update命令报错,错误信息为:

E: Problem executing scripts APT::Update::Post-Invoke 'rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true'
#6 21.17 E: Sub-process returned an error code

直接运行docker run -it php:8.1-fpm进入容器执行apt update也出现相同错误,已尝试替换apt为apt-get、切换docker-compose命令、root权限操作、重装Docker等方法,均无效。

解决思路

1. 移除APT的清理脚本配置

PHP官方镜像默认配置了APT清理脚本,可能因权限或目录问题导致执行失败,可先移除该配置再执行更新:

RUN rm -f /etc/apt/apt.conf.d/docker-clean \
    && apt update \
    && apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install intl opcache pdo pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

2. 更换APT源

默认Debian源可能存在连接或同步问题,更换为国内镜像源:

RUN echo "deb http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" > /etc/apt/sources.list \
    && echo "deb-src http://mirrors.aliyun.com/debian/ bullseye main non-free contrib" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list \
    && echo "deb-src http://mirrors.aliyun.com/debian-security/ bullseye-security main" >> /etc/apt/sources.list \
    && echo "deb http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list \
    && echo "deb-src http://mirrors.aliyun.com/debian/ bullseye-updates main non-free contrib" >> /etc/apt/sources.list \
    && apt update \
    && apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install intl opcache pdo pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

3. 调整缓存目录权限

手动创建缓存目录并设置正确权限,避免清理脚本执行时出错:

RUN mkdir -p /var/cache/apt/archives/partial \
    && chmod -R 755 /var/cache/apt \
    && apt update \
    && apt install -y zlib1g-dev g++ git libicu-dev zip libzip-dev zip libpq-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install intl opcache pdo pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

4. 更换PHP镜像变体

改用Alpine版本的PHP镜像,使用apk包管理工具替代APT,从根源规避问题:

FROM php:8.1-fpm-alpine

RUN apk add --no-cache zlib-dev g++ git icu-dev zip libzip-dev postgresql-dev \
    && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \
    && docker-php-ext-install intl opcache pdo pdo_pgsql \
    && pecl install apcu \
    && docker-php-ext-enable apcu \
    && docker-php-ext-configure zip \
    && docker-php-ext-install zip

5. 重新拉取基础镜像

可能是本地的php:8.1-fpm镜像损坏,执行以下命令重新拉取:

docker rmi php:8.1-fpm
docker pull php:8.1-fpm

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 02:16:04