如何在 arm64 主机平台上运行 amd64 docker 镜像
Posted
技术标签:
【中文标题】如何在 arm64 主机平台上运行 amd64 docker 镜像【英文标题】:how to run amd64 docker images on arm64 host platform 【发布时间】:2021-07-31 03:49:35 【问题描述】:我有一个 m1 mac,我正在尝试在基于 arm64 的主机平台上运行一个基于 amd64 的 docker 映像。但是,当我尝试这样做(使用 docker run)时,出现以下错误:
WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested.
当我尝试添加标签--platform linux/amd64
时,错误消息没有出现,但我似乎无法进入相关的shell,docker ps -a
显示容器在启动时立即退出。考虑到情况/如何使--platform
标签起作用,有人知道我如何在我的机器上运行这个精确的图像吗?
【问题讨论】:
【参考方案1】:使用--platform
是正确的。在我的 M1 Mac 上,我能够从 Docker Hub 运行 arm64 和 amd64 版本的 Ubuntu 映像。 uname提供的机器硬件名称就是证明。
# docker run --rm -ti --platform linux/arm/v7 ubuntu:latest uname -m
armv7l
# docker run --rm -ti --platform linux/amd64 ubuntu:latest uname -m
x86_64
运行 amd64 图像由 Rosetta2 仿真启用,如 here 所示。
并非所有映像都可用于 ARM64 架构。您可以添加
--platform linux/amd64
以在仿真下运行英特尔映像。
如果容器立即退出,那是您使用的特定容器有问题。
【讨论】:
非常感谢您的最后一部分 - 我只想使用预制的 Docker 容器进行开发,不要关心它不会那么快,只是想让它工作。谢谢你告诉我如何强制它。 我怎样才能让它与 docker-compose up 一起工作? @OamarKanji 只需在您的 Compose 文件中添加platform: linux/amd64
以上是关于如何在 arm64 主机平台上运行 amd64 docker 镜像的主要内容,如果未能解决你的问题,请参考以下文章