运行 gem 在 Docker 上使用 Apple Silicon M1 安装捆绑程序时出现 Qemu 错误
Qemu error when running gem install bundler on Docker with Apple Silicon M1
当我 运行 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) 芯片上的英特尔 (amd64) 容器。我检查了 qemu repo fora 相关问题,但没有运气:
在我的 docker-compose 文件中,我传递了以下配置,它帮助我修复了 docker 上的几个 M1 相关问题。但这不适用于这个特定问题。
web:
platform: linux/amd64
...
此问题发生在以下环境中
- Mac预订 Pro M1 2020
- Mac OS 大苏尔 11.2.3
- docker-compose版本1.29.1
- docker 引擎:20.10.6
- docker 桌面版 3.3.3(64133)
我也在 qemu repo 上开了一个问题:
https://gitlab.com/qemu-project/qemu/-/issues/340
关于如何解决这个问题有什么想法吗?
我发现了一个黑客。这是解决该特定问题的方法。我通过在 Dockerfile.yml
的顶部添加以下行来修复它,以更新可能已经过时的图像源
FROM ruby:2.3.4
如果您在使用其他库时遇到类似问题,我建议您在 Docker Hub https://hub.docker.com/ 上查找图像,并确保它们支持所需的架构:amd64 或 arm65等..
有关 qemu 错误的更多信息,您可以关注此 gitlab 问题线程:https://gitlab.com/qemu-project/qemu/-/issues/340
当我 运行 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) 芯片上的英特尔 (amd64) 容器。我检查了 qemu repo fora 相关问题,但没有运气:
在我的 docker-compose 文件中,我传递了以下配置,它帮助我修复了 docker 上的几个 M1 相关问题。但这不适用于这个特定问题。
web:
platform: linux/amd64
...
此问题发生在以下环境中
- Mac预订 Pro M1 2020
- Mac OS 大苏尔 11.2.3
- docker-compose版本1.29.1
- docker 引擎:20.10.6
- docker 桌面版 3.3.3(64133)
我也在 qemu repo 上开了一个问题: https://gitlab.com/qemu-project/qemu/-/issues/340
关于如何解决这个问题有什么想法吗?
我发现了一个黑客。这是解决该特定问题的方法。我通过在 Dockerfile.yml
的顶部添加以下行来修复它,以更新可能已经过时的图像源
FROM ruby:2.3.4
如果您在使用其他库时遇到类似问题,我建议您在 Docker Hub https://hub.docker.com/ 上查找图像,并确保它们支持所需的架构:amd64 或 arm65等..
有关 qemu 错误的更多信息,您可以关注此 gitlab 问题线程:https://gitlab.com/qemu-project/qemu/-/issues/340