Docker Mac M1 问题:清单不匹配

Docker Mac M1 issue No matching for manifest

提问人:Rajeesha R 提问时间:8/10/2023 最后编辑:Rajeesha R 更新时间:8/10/2023 访问量:607

问:

Dockerfile:1
--------------------
   1 | >>> FROM adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
   2 |     VOLUME /tmp
   3 |     COPY build/libs/*.jar myapp.jar
--------------------

错误:无法解决:adoptopenjdk/openjdk11:jre-11.0.11_9-alpine: 清单中的平台不匹配 SHA256:ed7ea16ca04b09cb381a094dff07c5d5ce5f0ead97540fcfc4b67c054e25e217: 未找到

关于这个问题的任何帮助。我正在使用 Mac M1 和 docker 在执行 docker 文件时出现此错误。

我在执行调用 docker 文件的脚本文件时收到此错误。

FROM adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
VOLUME /tmp
COPY build/libs/*.jar myapp.jar
ENTRYPOINT ["java", "-Xmx800m", "-XX:+UseG1GC", "-jar", "-Dspring.profiles.active=cloud", "/myApp.jar"]

相同的脚本在Windows系统中执行良好

Docker macOS 苹果-M1

评论

0赞 Martheen 8/10/2023
尝试 github.com/docker/for-mac/issues/5975#issuecomment-942403670

答:

0赞 Harsh Manvar 8/10/2023 #1

M1 MacWindows 的架构是不同的,这就是错误背后的原因。

采用openjdk/openjdk11:jre-11.0.11_9-alpine:与平台不匹配 清单

上述错误意味着您正在尝试的图像不适用于 playgform Macbook。我猜是操作系统/ARCH:linuxamd64

检查 OS/ARCHARM,它将起作用。

在此处查看所有可用的 ARM 选项: https://hub.docker.com/r/adoptopenjdk/openjdk11/tags?page=1&name=jre-11

这适合您 Slim,根据需要每晚发布。

更新

正如 Rick 所提到的,您可以使用并交叉运行它,但可能会有兼容性、性能的机会。--platform

建议尽可能使用本机映像,以提高性能兼容性

如果在 Mac 上构建创建多平台映像,则可以使用 buildx 构建 Docker 映像。

评论

2赞 Rick Rackow 8/10/2023
请记住,如果你明确地表达了这一点,你可以交叉运行,比如$ docker run --platform=linux/amd64 -ti --rm adoptopenjdk/openjdk11:jre-11.0.11_9-alpine
0赞 Harsh Manvar 8/10/2023
是的,毫无疑问,您是对的,ARM 上的 AMD 映像可能并不总是无缝运行并导致进一步的错误。原生图像通常表现更好。我在 ARM 上运行 TensorFlow AMD 时遇到了一个问题,浪费了几天时间解决一个接一个的错误。