当我运行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
看起来很管用。