在Docker镜像中,默认的平台类型是什么?

8

如果在dockerFile命令FROM中从docker hub加载图像时,未指定平台,那么它是基于当前服务器架构加载的吗?

我的意思是,当我在Amazon Linux 2 x86上构建dockerfile时,docker引擎是否可以获取可在linux/x86-64上运行的docker图像? 谢谢!


1
如果在Dockerfile中未指定加载基础镜像的位置,则不会构建该镜像,就是这么简单。您需要始终指定要从哪个源构建基础镜像。 - Emmanuel Spencer Egbuniwe
1个回答

10

Docker 构建默认使用目标平台的基础镜像,该目标平台默认为您的 Docker 宿主机的平台。因此,如果您的 Docker 引擎在 linux/amd64 上运行,并且您没有将 --platform 参数传递给 docker buildFROM 命令,在构建时会尝试从多平台基础镜像中拉取 linux/amd64 镜像。

您可以通过运行以下命令来检查您的 Docker 宿主机:

docker system info --format '{{.OSType}}/{{.Architecture}}'

我们可以使用任何命令来检查这个吗? - Hemel
1
@Hemel,你可以尝试使用 docker system info --format '{{.OSType}}/{{.Architecture}}' - BMitch
1
请注意,docker system info 不总是提供正确的结果。例如,在 M1 系统上,... --format '{{.OSType}}/{{.Architecture}}' 显示为 linux/aarch64,而不是 --platform 参数使用的 linux/arm64。更多信息,请参见 https://github.com/BretFisher/multi-platform-docker-build。 - Chadwick
我不确定这是否适用于所有图像,但我有使用图像的经验,其中传递 --platform linux/arm64--platform linux/aarch64 解析为相同的图像。(Docker 20.10.22) - bric3

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