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

Docker构建ppc64le/ubuntu镜像apt-get update返回132错误码如何解决

问题背景

执行docker build -t test:test .命令构建镜像时触发报错,完整构建日志如下:

Sending build context to Docker daemon  1.225MB
Step 1/3 : FROM ppc64le/ubuntu:jammy
 ---> b4cdd8bc1823
Step 2/3 : ARG DEBIAN_FRONTEND=noninteractive
 ---> Using cache
 ---> 0d6079ed0b29
Step 3/3 : RUN apt-get update
 ---> Running in fca7ae125244
The command '/bin/sh -c apt-get update' returned a non-zero code: 132
错误原因判断

退出码132和ppc64le架构直接相关。Linux环境下进程退出码大于128时代表进程被信号终止,132减去128等于4,对应SIGILL非法指令信号——本质是进程尝试执行当前CPU硬件不支持的指令,被内核直接终止。
这个报错绝大多数场景是宿主机架构和镜像目标架构不匹配,且缺少跨架构指令转译支持:使用的基础镜像ppc64le/ubuntu:jammy是PowerPC 64位小端架构专用镜像,如果宿主机是常见的x86_64、arm64架构,没有配置QEMU用户态转译的情况下,容器内的ppc64le架构二进制(此处为apt-get)无法被宿主机CPU直接识别执行,就会抛出SIGILL异常返回132错误码。
如果宿主机本身就是ppc64le架构,那大概率是本地拉取的基础镜像层损坏,或者虚拟化场景下宿主机没有给虚拟机透传完整的PowerPC指令集。

排查步骤
  • 执行uname -m确认宿主机架构:如果输出结果不是ppc64le,即可确定是跨架构运行缺少转译的问题;如果输出为ppc64le,则排查镜像完整性和虚拟化配置问题。
  • 跨架构场景下执行ls /proc/sys/fs/binfmt_misc/查看是否存在qemu-ppc64le条目,不存在则说明跨架构转译规则未注册。
  • 原生ppc64le场景下先删除本地旧镜像后重新拉取,确认是否是镜像损坏导致的问题。
修复方案
  • 非ppc64le架构宿主机跨机构建场景:
    • 安装QEMU用户态静态二进制包:Debian/Ubuntu系执行apt update && apt install -y qemu-user-static,RHEL/CentOS/Fedora系执行dnf install -y qemu-user-static
    • 确认binfmt_misc跨架构转译规则已正常注册,保证Docker可以自动调用QEMU转译非本机架构的二进制
    • 清除之前的构建缓存,重新执行docker build -t test:test .即可正常完成构建
  • 原生ppc64le架构宿主机场景:
    • 执行docker rmi ppc64le/ubuntu:jammy删除本地缓存的旧基础镜像,重新拉取官方镜像后再次尝试构建
    • 如果是在PowerPC物理机的虚拟机内构建,检查虚拟机CPU配置,打开指令集透传开关,保证虚拟机可以使用完整的PowerPC硬件指令集

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:54:27