之前(在 Linux 上)工作的 Docker 化项目在我的新 M1 mac 上构建正常,但在运行时失败并出现此错误:
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
我知道这是由于不同的架构造成的(mac 是arm,linux 机器是amd),但不知道如何更改我的项目以使其工作。我该如何前进?
我的基础镜像是
mhart/alpine-node:16
,我正在运行 Node JS (TypeScript) 应用程序。
我尝试过的(因此为什么这不是重复)-阅读了许多类似的线程-但没有帮助:
RUN apk add --update qemu-x86_64
分享,以防对其他人有帮助并节省一些时间: 最后,有效的方法是将我的基本图像从
mhart/alpine-node:16
更改为基于 non-alpine 的图像 node:16.18.1-alpine3.15
。
有一段节点图像标记为 M1 (arm64) 架构。
我首先尝试使用最新的
19.1.0-alpine
,它解决了上述 qemu 故障,但与我的应用程序不兼容,因此选择了 v16 版本,并且问题得到了解决。
如果在类似的情况下,我建议尝试查找可能使用 arm64 架构构建的任何更新的映像,甚至可能更改(如我的情况)您的基础映像并调整 Dockerfile(以及缺少的内容的增量)以让它发挥作用。
有类似的问题,你试过这个解决方案吗?