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

x86_64环境使用buildx构建arm镜像报qemu段错误如何解决

问题根因

该段错误是旧版本QEMU用户态模拟的已知兼容性bug:你使用的2020年固定commit版本的docker/binfmt镜像内置QEMU 5.0,在模拟arm64架构执行glibc 2.31+(对应Debian Bullseye及以上版本)的libc-bin配置脚本(即日志中Processing triggers for libc-bin对应的ldconfig流程)时会稳定触发段错误。同时Ubuntu 18.04默认的binfmt注册规则、buildx驱动配置不当也可能导致该问题复现。

解决步骤(按优先级从高到低排序)
  • 替换binfmt注册镜像为官方维护版本
    先清除之前注册的错误跨架构执行规则,再使用buildx项目维护的最新binfmt镜像重新注册(内置打了兼容性补丁的高版本QEMU,默认开启F标志位,可直接修复该段错误问题):
    # 清除旧的qemu相关binfmt规则
    docker run --rm --privileged tonistiigi/binfmt:latest --uninstall qemu-*
    # 注册全架构跨二进制执行支持
    docker run --rm --privileged tonistiigi/binfmt:latest --install all
    
    注册完成后可执行cat /proc/sys/fs/binfmt_misc/qemu-aarch64验证,输出包含flags: F即为配置正常,该标志表示QEMU二进制会被预加载进内核内存,运行时不会依赖容器或宿主机的额外库文件,避免模拟执行异常。
  • 重建buildx构建实例
    旧的buildx实例可能缓存了损坏的跨架构构建缓存,删除实例后重新创建,显式指定多架构构建必须的docker-container驱动:
    docker buildx rm mybuilder
    docker buildx create --name mybuilder --driver docker-container --use
    docker buildx inspect --bootstrap
    
  • 升级Ubuntu 18.04系统内核(前两步操作后仍报错时执行)
    Ubuntu 18.04默认搭载的4.15版本内核对binfmt_misc的F标志支持存在已知缺陷,安装HWE渠道的5.4及以上版本内核后重启即可修复:
    apt update && apt install -y linux-image-generic-hwe-18.04
    reboot
    
  • 临时规避方案(不推荐长期使用)
    若暂时无法调整QEMU版本,可将Dockerfile基础镜像替换为基于Debian Buster的版本(该版本搭载glibc 2.28,不会触发该QEMU bug):
    FROM python:3.8-slim-buster
    
    待QEMU环境修复后再换回默认slim标签即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:03:22