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



当我运行docker-compose up时,我得到以下错误

qemu: uncaught target signal 6 (Aborted) - core dumped

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

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

根据docker的github上的这个github问题线程,这是一个与qemu相关的错误

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

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

https://gitlab.com/qemu-project/qemu/-/issues?scope=all&utf8=%E2%9C%93&state=打开&搜索=未捕获+目标+信号+6

在我的docker compose文件中,我传递了以下配置,它帮助我修复了docker上的几个M1相关问题。但这对这个具体问题不起作用。

web:
platform: linux/amd64
...

此问题发生在以下环境上

  • Macbook Pro M1 2020
  • Mac操作系统Big Sur 11.2.3
  • docker compose 1.29.1版本
  • docker发动机:20.10.6
  • docker桌面3.3.3(64133(

我还打开了一个关于qemu回购的问题:https://gitlab.com/qemu-project/qemu/-/issues/340

关于如何解决这个问题有什么想法吗?

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

FROM ruby:2.3.4

如果你在另一个库中遇到类似的问题,我建议你在Docker Hub上找一张图片https://hub.docker.com/并确保他们支持所需的体系结构:amd64或arm64等…


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

我只是想添加一个讨论点,因为这是谷歌上出现的第一件事。

我们使用FullstaqRuby-jemalloc作为我们的基本映像,不幸的是,没有FullstaqRuby的ARM构建。将我们的Dockerfile更改为使用Dockerhub基本映像似乎可以解决这个问题。

切换

FROM quay.io/evl.ms/fullstaq-ruby:2.7.6-jemalloc-buster-slim

FROM ruby:2.7.6-slim-bullseye

看起来很管用。

最新更新