【问题标题】:qemu: uncaught target signal 11 (Segmentation fault) - core dumped in docker container after changing to an M1 macqemu: uncaught target signal 11 (Segmentation fault) - 核心在更改为 M1 mac 后转储到 docker 容器中
【发布时间】:2022-11-24 14:06:53
【问题描述】:

以前工作的(在 linux 上)dockerized 项目在我的新 M1 mac 上构建正常,但在运行时失败并出现此错误:

qemu: uncaught target signal 11 (Segmentation fault) - core dumped

我知道 this is due to a different architecture(mac 是 arm,linux 机器是 amd)但不知道如何更改我的项目以使其工作。我该如何前进?

我的基本图像是mhart/alpine-node:16,我正在运行一个 Node JS (TypeScript) 应用程序。

我尝试了什么(以及为什么这是不是重复) - 阅读了许多类似的线程 - 但没有帮助:

  • 为 amd/64 (linux/intel arch) 构建 Mac 然后应该虚拟化,但这并没有太大变化。
  • adding a command to the Dockerfile 更新 qemu RUN apk add --update qemu-x86_64
  • 正在将基础 alpine 节点映像更新到最新版本
  • 在 docker 桌面中启用了实验性功能
  • 从 docker 桌面我可以看到图像是模拟的 arm64 架构。我删除了我的 Dockerfile 中的“from arm64”平台说明符和 docker compose 文件中的类似平台覆盖,然后我可以构建一个在没有 amd64 标签的情况下运行的应用程序映像。然而,它仍然遇到同样的问题并失败。
  • 尝试使用普通节点 (node14) 基础映像

【问题讨论】:

    标签: node.js docker apple-m1 qemu apple-silicon


    【解决方案1】:

    分享以防它帮助其他人并节省一些时间: 最后,有效的方法是将我的基本图像从 mhart/alpine-node:16 更改为非高山基于图像node:16.18.1-alpine3.15。 有一段 node images 标记为 M1 (arm64) 架构。

    我首先尝试使用最新的 19.1.0-alpine 解决了上述 qemu 故障但与我的应用程序不兼容,因此选择了一个 v16 版本 - 并且问题解决了。

    如果在类似的情况下,我建议尝试找到任何可能已经考虑到 arm64 架构构建的更新图像,甚至可能更改(如我的情况)您的基本图像并调整 Dockerfile(使用缺失的增量)以制作这行得通。

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 1970-01-01
      • 2015-02-20
      • 2014-03-25
      • 2014-10-11
      • 2011-07-17
      • 2013-02-15
      • 2019-07-17
      • 1970-01-01
      相关资源
      最近更新 更多