如何在amd64主机平台上运行arm64 docker镜像

bon*_*ges 5 linux ubuntu docker apple-m1

尝试将在我的 mac m1 上创建的映像运行到 Docker Playground 网站时出现以下错误

WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64) and no specific platform was requested

有办法让它成为可能吗?

The*_*ead 1

您能与我们分享一下您是如何塑造自己的形象的吗?

\n

您可以从单个主机构建多架构映像,但您需要确保在构建时将正确的标志传递给 Docker。就您而言,您需要定位linux/amd64才能使其在您定位的主机上运行。

\n

上面文章中包含的示例就是这样,使用docker buildkit

\n
~/test \xe2\x9d\xaf\xe2\x9d\xaf\xe2\x9d\xaf docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t adamparco/demo:latest --push .\n
Run Code Online (Sandbox Code Playgroud)\n

或者,如果您还没有启用 buildkit (我认为现在 docker 桌面已经默认启用了),您可以通过docker manifests使用旧方法,按照以下示例:

\n
# AMD64\n$ docker build -t your-username/multiarch-example:manifest-amd64 --build-arg ARCH=amd64/ .\n$ docker push your-username/multiarch-example:manifest-amd64\n\n# ARM32V7\n$ docker build -t your-username/multiarch-example:manifest-arm32v7 --build-arg ARCH=arm32v7/ .\n$ docker push your-username/multiarch-example:manifest-arm32v7\n\n# ARM64V8\n$ docker build -t your-username/multiarch-example:manifest-arm64v8 --build-arg ARCH=arm64v8/ .\n$ docker push your-username/multiarch-example:manifest-arm64v8 \n
Run Code Online (Sandbox Code Playgroud)\n