如何使用 docker manifest rm 命令删除清单列表

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何管理 Docker 清单列表(manifest list),这对于创建多架构镜像至关重要。我们将介绍通过合并不同平台的镜像来创建清单列表的过程,使用 docker manifest inspect 命令验证其是否存在,最后演示如何使用 docker manifest rm 命令删除清单列表。这个实践练习将让你在 Docker 工作流程中获得处理清单列表的实际经验。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/rmi("Remove Image") subgraph Lab Skills docker/rm -.-> lab-555172{{"如何使用 docker manifest rm 命令删除清单列表"}} docker/inspect -.-> lab-555172{{"如何使用 docker manifest rm 命令删除清单列表"}} docker/pull -.-> lab-555172{{"如何使用 docker manifest rm 命令删除清单列表"}} docker/rmi -.-> lab-555172{{"如何使用 docker manifest rm 命令删除清单列表"}} end

创建清单列表

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

首先,让我们拉取两个不同的镜像,用于创建清单列表。我们将使用 amd64arm64 架构的 alpine 镜像。

docker pull alpine:latest
docker pull --platform arm64 alpine:latest

第一条命令会为你当前的架构(可能是 amd64)拉取 alpine:latest 镜像。第二条命令则会明确为 arm64 架构拉取 alpine:latest 镜像。

现在,你可以使用 docker manifest create 命令来创建清单列表。其语法为 docker manifest create TARGET_IMAGE SOURCE_IMAGE [SOURCE_IMAGE...]。我们将创建一个名为 my-alpine:latest 的清单列表,其中包含 amd64arm64 架构的 alpine:latest 镜像。

docker manifest create my-alpine:latest alpine:latest alpine:latest --amend alpine:latest --platform arm64

在这个命令中:

  • my-alpine:latest 是你要创建的新清单列表的名称。
  • alpine:latest 是第一个源镜像(针对默认架构)。
  • --amend alpine:latest --platform arm64arm64 平台的 alpine:latest 镜像添加到清单列表中。

运行此命令后,你已经在本地创建了一个清单列表。不过,它尚未推送到镜像仓库(registry)。我们将在后续步骤中进行推送。

验证清单列表是否存在

在上一步中,我们创建了一个名为 my-alpine:latest 的清单列表(manifest list)。现在,我们将验证这个清单列表是否已成功创建并存在于本地。

你可以使用 docker manifest inspect 命令来查看清单列表的详细信息。如果清单列表存在,该命令将以 JSON 格式输出其内容。

docker manifest inspect my-alpine:latest

如果 my-alpine:latest 清单列表已成功创建,你将看到一个描述该清单列表的 JSON 输出,其中包括它为不同架构引用的不同镜像。如果清单列表不存在,该命令将返回错误。

输出将显示有关清单列表的信息,例如架构版本(schema version)、媒体类型(media type)以及包含的每个架构的清单列表。你应该会看到 amd64arm64 架构的条目,这证实了清单列表已正确创建,并引用了这些平台的镜像。

删除清单列表

在前面的步骤中,我们创建并验证了名为 my-alpine:latest 的清单列表(manifest list)的存在。现在,我们将学习如何删除这个清单列表。

要删除清单列表,你可以使用 docker manifest rm 命令,后面跟上清单列表的名称。

docker manifest rm my-alpine:latest

此命令将删除对 my-alpine:latest 清单列表的本地引用。请注意,该命令仅删除清单列表本身,而不会删除清单列表所引用的各个镜像。我们之前拉取的 amd64arm64 架构的 alpine:latest 镜像仍将保留在你的系统中。

执行该命令后,你应该会看到表明清单列表已被取消标签(untagged)的输出。

验证清单列表已删除

在上一步中,我们删除了名为 my-alpine:latest 的清单列表(manifest list)。现在,我们将验证该清单列表是否已成功删除,并且不再存在于本地。

你可以再次使用 docker manifest inspect 命令来尝试检查该清单列表。如果清单列表已成功删除,此命令应返回一条错误信息,表明未找到该清单列表。

docker manifest inspect my-alpine:latest

在删除清单列表后运行此命令,你应该会看到类似于 no such manifest: docker.io/library/my-alpine:latest 的错误消息。这证实了该清单列表已从你的本地 Docker 环境中移除。

总结

在本次实验(Lab)中,我们学习了如何创建和管理 Docker 清单列表(manifest list)。首先,我们拉取了不同架构的镜像,然后使用 docker manifest create 命令将它们合并为一个清单列表,展示了如何构建多架构镜像。

创建完成后,我们使用 docker manifest inspect 命令验证了清单列表的存在。最后,我们学习了如何使用 docker manifest rm 命令删除清单列表,并确认其已被移除,涵盖了 Docker 中清单列表的基本生命周期管理。