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

M1 Mac下Docker容器运行报错qemu: uncaught target signal 11求助

解决方案
  • 换用官方ARM兼容的Node基础镜像
    别再用mhart/alpine-node了,直接用官方Node镜像,比如node:16-alpine或者node:16-bullseye-slim。官方镜像现在原生支持多架构,Docker会自动匹配M1的ARM架构,不需要qemu转译,从根儿上解决架构兼容问题。

  • 彻底清理Docker缓存和旧镜像
    之前折腾各种架构镜像留下的缓存可能搞事情,执行下面的命令清干净:

    docker system prune -a
    docker builder prune -a
    

    清完重新构建镜像,保证用的是最新的适配ARM的基础镜像层。

  • 检查并重构项目的原生依赖模块
    如果项目里用到bcrypt、canvas、sharp这类原生Node模块,它们是跟CPU架构绑定编译的。在M1上构建时得确保这些模块是针对ARM架构重新编译的:

    • 删除本地的node_modules和package-lock.json/yarn.lock
    • 在Dockerfile里加RUN npm rebuild或者RUN yarn rebuild步骤,让构建阶段针对当前架构重新编译原生模块
    • 别直接把本地编译好的node_modules复制到镜像里,一定要在镜像内重新安装依赖
  • 明确指定ARM64架构构建镜像
    直接指定构建ARM64架构的镜像,别让Docker默认用amd64转译:
    用docker build的话:

    docker build --platform linux/arm64 -t your-image-name .
    

    用docker-compose的话,在配置里加平台指定:

    services:
      your-service:
        build:
          context: .
          platform: linux/arm64
        # 其他服务配置
    
  • 关掉Docker的qemu转译功能
    有时候强制关闭qemu转译能解决段错误,打开Docker Desktop的设置,找到"Features in development",关掉"Use the new Virtualization framework";或者在终端执行:

    export DOCKER_DEFAULT_PLATFORM=linux/arm64
    

    之后重启Docker Desktop。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 17:10:20