提问人:Rajeesha R 提问时间:8/10/2023 最后编辑:Rajeesha R 更新时间:8/10/2023 访问量:607
Docker Mac M1 问题:清单不匹配
Docker Mac M1 issue No matching for manifest
问:
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系统中执行良好
答:
0赞
Harsh Manvar
8/10/2023
#1
M1 Mac 和 Windows 的架构是不同的,这就是错误背后的原因。
采用openjdk/openjdk11:jre-11.0.11_9-alpine:与平台不匹配 清单
上述错误意味着您正在尝试的图像不适用于 playgform Macbook。我猜是操作系统/ARCH:linuxamd64
检查 OS/ARCH : ARM,它将起作用。
在此处查看所有可用的 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 时遇到了一个问题,浪费了几天时间解决一个接一个的错误。
评论