介绍

在本次实验中,你将学习如何使用 CODE0 命令向 Docker 清单列表(manifest list)添加平台信息。我们将从创建一个包含 CODE1 镜像不同架构版本的清单列表开始。

创建完清单列表后,你将练习为列表中的各个清单添加注释,以指定架构、操作系统、操作系统特性、版本和架构变体。最后,你将检查添加了注释的清单列表,以验证所添加的平台信息。这个过程对于有效构建和分发多架构 Docker 镜像至关重要。

创建一个清单列表

在这一步中,你将学习如何创建一个清单列表(manifest list)。清单列表是镜像清单(image manifest)的索引,它允许你使用一个名称引用适用于不同架构和操作系统的多个镜像。这对于分发多架构镜像特别有用。

在创建清单列表之前,你需要准备一些可用的镜像。在本次实验中,你将使用不同架构的 CODE0 镜像。你将拉取 CODE1 镜像的 CODE2CODE3 版本。

首先,拉取 CODE0 镜像的 CODE1 版本:

docker pull alpine:latest

你应该会看到显示正在拉取和提取镜像的输出信息。

接下来,拉取 CODE0 镜像的 CODE1 版本。注意,这次拉取时你需要指定平台。

docker pull --platform arm64 alpine:latest

同样,你会看到显示正在拉取镜像的输出信息。

现在你已经有了这些镜像,就可以创建清单列表了。你将使用 CODE_0 命令。该命令需要你指定要创建的清单列表的名称,后面跟着要包含在列表中的镜像名称。

让我们创建一个名为 CODE0 的清单列表,其中包含 CODE1(amd64)和 CODE_2(arm64)镜像。

docker manifest create my-alpine-list alpine:latest alpine:latest --amend --amend

CODE_0 标志用于在清单列表中添加或更新条目。这里使用了两次该标志,因为你要添加两个镜像。

运行此命令后,你就创建了一个清单列表。不过,目前这个列表仅存储在本地。在后续步骤中,你将把它推送到镜像仓库(registry)。

使用架构和操作系统为清单添加注释

在这一步中,你将为上一步创建的清单列表添加注释。为清单添加注释可以让你向其中添加元数据,例如镜像所适用的架构和操作系统。这些信息对于 Docker 根据容器运行的环境从清单列表中选择正确的镜像至关重要。

你将使用 CODE0 命令为 CODE1 清单列表中的条目添加架构和操作系统信息。该命令需要指定清单列表名称、列表中的镜像名称以及注释标志。

首先,为对应 CODE0 架构和 CODE1 操作系统的 CODE_2 镜像添加注释。

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux

此命令告知 Docker,CODE0 清单中的 CODE1 镜像适用于 CODE2 架构和 CODE3 操作系统。

接下来,为对应 CODE0 架构和 CODE1 操作系统的 CODE_2 镜像添加注释。

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux

此命令为列表中的另一个 CODE0 镜像添加注释,指定它适用于 CODE1 架构和 CODE_2 操作系统。

通过为清单列表添加架构和操作系统信息注释,当用户在具有特定架构的系统上拉取 CODE_0 时,Docker 就能够自动选择正确的镜像。

使用操作系统特性和版本为清单添加注释

在这一步中,你将继续为清单列表添加注释,补充有关操作系统特性和版本的信息。虽然对于像 Alpine 这样的基础镜像来说,这些注释不太常见,但对于那些需要特定操作系统功能或版本的镜像而言,这些注释会很有用。

CODE0 命令允许你使用 CODE1 标志指定操作系统特性,使用 CODE_2 标志指定操作系统版本。

为了便于演示,假设你的 CODE0 Alpine 镜像需要特定的操作系统特性(例如 CODE1),并且是为特定的操作系统版本(例如 CODE2)构建的。你将使用这些信息为 CODE3 中的 CODE_4 条目添加注释。

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux --os-features fips --os-version 1.0

此命令更新了 CODE0CODE1 条目的注释,添加了指定的操作系统特性和版本。

同样,假设你的 CODE0 Alpine 镜像需要不同的操作系统特性(例如 CODE1),并且是为不同的操作系统版本(例如 CODE2)构建的。你将为 CODE3 条目添加注释。

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --os-features selinux --os-version 2.0

此命令更新了 CODE_0 条目的注释,添加了其特定的操作系统特性和版本。

通过添加这些注释,你可以提供有关镜像要求和兼容性的更详细信息,Docker 或其他工具在从清单列表中选择镜像时可以利用这些信息。

使用架构变体为清单添加注释

在这一步中,你将为清单列表添加架构变体信息。架构变体用于区分同一架构的不同版本或实现。例如,CODE0 架构有 CODE1CODE2CODE3 等变体。

你可以使用 CODE0 命令搭配 CODE1 标志来指定架构变体。

假设你的 CODE0 Alpine 镜像专门为 CODE1 架构的 CODE2 变体构建。你将使用此信息为 CODE3 中的 CODE_4 条目添加注释。

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --variant v8

此命令更新了 CODE0CODE1 条目的注释,添加了 CODE_2 变体信息。

对于 CODE0 架构,变体不太常见,但如果需要,你也可以指定一个。在本实验中,你不会为 CODE1 条目添加变体信息。

通过添加架构变体信息,你可以提供关于镜像兼容性的更具体细节,使 Docker 能够为给定系统选择最合适的镜像。

检查带注释的清单列表

在最后这一步,你将检查已创建并添加了注释的清单列表,查看你所添加的信息。CODE_0 命令可让你查看清单列表的详细信息,包括其中包含的清单及其注释。

要检查你的 CODE_0 清单列表,请运行以下命令:

docker manifest inspect my-alpine-list

此命令将输出一个表示清单列表的 JSON 文档。你应该会看到 CODE0CODE1 镜像的条目,以及你在前面步骤中添加的注释,例如 CODE2CODE3CODE4CODE5CODE_6

在输出中查找 CODE0 数组。该数组中的每个对象都代表清单列表中包含的一个镜像。你应该能够在每个清单对象中找到 CODE1 字段,其中包含 CODE2CODE3CODE4CODE5 信息。对于 CODE6 条目,你还应该能看到 CODE7 字段。

检查清单列表是验证注释是否已正确应用以及清单列表是否按你预期配置的好方法。

总结

在本次实验中,你学会了怎样去创建Docker清单列表。清单列表可作为众多镜像清单的索引,能够让你以一个单一的名称来分发多架构镜像。首先,你针对 CODE0CODE1 架构,拉取了相应的 CODE2 镜像。紧接着,你运用 CODE3 命令,并配合 CODE4 标志,构建出了一个名为 CODE5 的本地清单列表,同时将之前拉取的镜像包含在其中。

在创建清单列表后,你已经知道了如何通过CODE_0命令为列表中的各个清单添加注释。这一过程涉及添加关键元数据,比如架构和操作系统信息等。你特别学到了怎样为清单添加架构和操作系统的详细信息,还更进一步了解到如何添加操作系统特性、版本以及架构变体信息。最后,你学会了如何检查已添加注释的清单列表,以此来验证所添加的元数据,保证列表能准确反映所包含镜像的特性。

本文转载于:https://labex.io/zh/tutorials/docker-how-to-use-docker-manifest-annotate-command-to-add-platform-information-555168 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

联系方式: bd@zhengruan.com
网站备案号:苏ICP备2026018738号-1