Docker 如何选择镜像的 os/arch

igg*_*ggi 9 docker dockerfile

我开始学习如何使用 Docker 并有这个问题。当我制作“docker pull <image-name>”时,我通常从 docker hub 中提取图像。

但镜像可以有操作系统和架构不同的不同版本。例如,Python 映像有 Linux 和 Windows 版本。

python 图像标签

我想知道如果我只执行“docker pull python”,我会得到什么图像,以及如何自己选择操作系统和架构。

实际上,我更喜欢使用 Linux 映像,因为它是轻量级的,而且我不想意外拉取 Windows 映像。

Von*_*onC 1

我想知道如果我只执行“docker pull python”,我会得到什么图像

来自“利用多CPU架构支持

Docker Hub 上的大多数 Docker 官方镜像都提供了多种架构。
例如,busybox图像支持amd64arm32v5arm32v6arm32v7arm64v8i386ppc64le、 和s390x。当在/机器
上运行此映像时,该变体将被拉出并运行。x86_64amd64amd64

因此,这取决于您执行docker pull.


以及我如何自己选择操作系统和架构。

同一页面添加:

您还可以在 Docker Desktop 上运行针对不同架构的映像。

您可以使用 SHA 标签运行映像并验证架构。
例如,当您在 macOS 上运行以下命令时:

docker run --rm docker.io/username/demo:latest@sha256:2b77acdfea5dc5baa489ffab2a0b4a387666d1d526490e31845eb64e3e73ed20 uname -m
Run Code Online (Sandbox Code Playgroud)

架构64

docker run --rm docker.io/username/demo:latest@sha256:723c22f366ae44e419d12706453a544ae92711ae52f510e226f6467d8228d191 uname -m
Run Code Online (Sandbox Code Playgroud)

ARMV71

在上面的示例中,uname -m 按预期返回 aarch64 和 armv7l,即使在本机 macOS 或 Windows 开发人员计算机上运行命令时也是如此