Docker(Apple Silicon/M1预览版)sonarqube“在清单列表条目中没有与linux/arm64/v8匹配的清单”

14

这是我的YAML文件。

文件名 - docker-compose.mysonar.yml

version: '2'
services:
    my-sonar:
        image: sonarqube:7.1
        ports:
            - 9001:9000

当我运行 docker-compose -f docker-compose.mysonar.yml up 时,它会抛出错误 - “在清单列表条目中没有匹配的linux/arm64/v8清单”

我该如何修复这个问题?


3
默认的 SonarQube 不支持 arm64 架构,也没有在 Docker Hub 上找到相关镜像。不妨尝试使用 amd64/sonarqube 镜像。 - Yuki Tanaka
6个回答

32

苹果M1芯片采用ARM架构。当我们使用--platform linux/x86_64选项运行docker时,它会在qemu模拟器上运行,这不会给我们带来最佳性能。要获取更多信息,请查看docker apple-silicon文档

为了获得M1芯片的本地性能,您可以按照以下步骤操作。

  1. 从Sonarqube Dockerfile在Apple Silicon上构建自己的Sonarqube镜像。
git clone https://github.com/SonarSource/docker-sonarqube
cd docker-sonarqube/9/community

#build
docker build -t sonarqube-arm .

#run
docker run -d -p 9000:9000 sonarqube-arm

或者

  1. 您可以使用我最近在AWS ARM服务器上构建的基于ARM架构的SonarQube Docker镜像。
docker run -d -p 9000:9000 koolwithk/sonarqube-arm:9.2.4-community

顺便说一下,感谢你主动构建 M1 镜像。 - ejabu
我想提一下,我在运行sonarqube-arm镜像时遇到了问题,但是通过以sudo身份运行先前的命令,我已经解决了这个问题:sudo docker run -d -p 9000:9000 sonarqube-arm - devqmr
它还需要构建路径,因此请尝试使用以下命令: docker build ./ -t sonarqube-arm - Vaibhav Arora
1
构建路径已经在末尾添加了点。 - koolwithk

30

--平台 linux/x86_64

在无法正常工作的命令中使用此标志。

例如:

docker run --platform linux/x86_64 sonarqube 

希望它有所帮助 :)


不,你不能使用 --platform linux/x86_64 运行。它基于 arm64 架构。 - koolwithk
1
我已经在做了,所以... - Ashutosh Tiwari
刚刚发现它在amd64 qemu仿真上运行,这不会给你最佳效果。你会失去一些性能,并可能耗尽你的电池。你还可以在这里查看已知问题-https://docs.docker.com/desktop/mac/apple-silicon/。 - koolwithk
您可以在 M1 芯片上构建自己的 Docker 镜像,或者使用已经创建的 arm64 Docker 镜像。我已经添加了如何同时执行这两个操作的答案。 - koolwithk

5
只需按照下面所示,将此平台添加到docker-compose.yml文件中即可。
platform: linux/amd64

docker-compose.yml

version: '2'

services:
  my-sonar:
      image: sonarqube:7.1
      platform: linux/amd64
      ports:
        - 9001:9000

0

该存储库中的所有图像都在linux/amd64的清单列表中具有单个清单。您可以尝试直接拉取该清单的sha以查看是否可以通过虚拟化运行。目前7.1的标签为:

sonarqube@sha256:e36dcf59f4da62694a6e8265e6c56ca18596f59880f4cb6dd2c9efc6e0022405

否则,您可以尝试为您的平台构建图像,但上游图像似乎表明这是不受支持,并且他们也不会修复M1的问题

感谢您的回复@bmitch 我尝试了相同的方法,但对我没有用。从SonarSource社区找到了这个 - https://jira.sonarsource.com/browse/CPP-2882 https://community.sonarsource.com/t/apple-silicon-issue/38774 - Udhaya

0

来自守护进程的错误响应:找不到mwizner/sonarqube:latest的清单:清单未知 - Lars
@Lars,我认为你必须添加你想要的版本。例如:mwizner/sonarqube:9.4.0-community - snoob dogg
@snoobdogg,谢谢,这可能会帮助其他遇到同样问题的人(尽管我认为我已经尝试过了...不确定!)。最终我选择了下面koolwithk的答案,对我来说完美地解决了问题。 - Lars

0

尝试使用colima,它是一个易于使用的表单,可用于将Docker与其他平台集成

安装方法:

brew install colima

在启动Docker容器之前使用

colima start --arch x86_64 --memory 4

docker run ...

使用后停止

colima stop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接