使用 Apple Silicon M1 在 Docker 上运行 gem install bundler 时出现 Qemu 错误

Ric*_*ndx 8 qemu bundler docker docker-compose apple-m1

当我跑步时docker-compose up出现以下错误

\n
qemu: uncaught target signal 6 (Aborted) - core dumped\n
Run Code Online (Sandbox Code Playgroud)\n

当 docker-compose 运行命令时会发生这种情况bundle install

\n
 => ERROR [5/6] RUN bundle install --jobs 4 --path .bundle/                                                                                                                  4.2s\n------\n > [5/6] RUN bundle install --jobs 4 --path .bundle/:\n#10 4.170 Fetching gem metadata from https://rubygems.org/.[BUG] Segmentation fault at 0x0000418f81e2b0\n#10 4.177 ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-linux]\n#10 4.177\n#10 4.177 SEGV received in SEGV handler\n#10 4.178 -- Control frame information -----------------------------------------------\n#10 4.178 SEGV received in SEGV handler\n#10 4.178 SEGV received in SEGV handler\n#10 4.178 qemu: uncaught target signal 6 (Aborted) - core dumped\n#10 4.192 Aborted\n------\nexecutor failed running [/bin/sh -c bundle install --jobs 4 --path .bundle/]: exit code: 134\n
Run Code Online (Sandbox Code Playgroud)\n

根据 docker\'s github \xe2\x80\x93 上的这个 github 问题线程,它是一个与 qemu 相关的错误

\n

https://github.com/docker/for-mac/issues/5148#issuecomment-784992663

\n

它提到 qemu 是 Docker 的上游组件,用于在 M1 (arm64) 芯片上运行 Intel (amd64) 容器。我检查了 qemu repo 论坛相关问题,但没有成功:

\n

https://gitlab.com/qemu-project/qemu/-/issues?scope=all&utf8=%E2%9C%93&state=opened&search=uncaught+target+signal+6

\n

在我的 docker-compose 文件中,我传递了以下配置,它帮助我修复了 docker 上的几个与 M1 相关的问题。但这不适用于这个特定问题。

\n
web:\n    platform: linux/amd64\n    ...\n
Run Code Online (Sandbox Code Playgroud)\n

此问题发生在以下环境中

\n
    \n
  • Macbook Pro M1 2020
  • \n
  • Mac 操作系统 大苏尔 11.2.3
  • \n
  • docker-compose 版本 1.29.1
  • \n
  • 码头引擎:20.10.6
  • \n
  • docker桌面3.3.3(64133)
  • \n
\n

我还在 qemu repo 上提出了一个问题:\n https://gitlab.com/qemu-project/qemu/-/issues/340

\n

有想法该怎么解决这个吗?

\n

Ric*_*ndx 3

我发现了一个黑客。这是解决该特定问题的一种方法。我通过在顶部添加以下行Dockerfile.yml来更新可能已过时的图像源来修复此问题

FROM ruby:2.3.4
Run Code Online (Sandbox Code Playgroud)

如果您在另一个库中遇到类似问题,我建议您在 Docker Hub https://hub.docker.com/上查找映像,并确保它们支持所需的架构:amd64 或 arm64 等...


有关 qemu 错误的更多信息,您可以关注此 GitLab 问题线程: https: //gitlab.com/qemu-project/qemu/-/issues/340