商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 系统应用 > 如何使用 docker manifest create 命令构建多架构镜像

如何使用 docker manifest create 命令构建多架构镜像

  发布于2026-08-19 阅读(0)

扫一扫,手机访问

介绍

在这个实验中,你将学习如何使用 CODE0 命令来构建和管理多架构 Docker 镜像。多架构镜像对于在具有不同 CPU 架构(如 CODE1CODE_2)的各种环境中部署应用程序至关重要。

在这个实验中,我们将带你完成准备多架构镜像的操作,包括启用实验性功能以及创建多架构构建器实例。接着,你要创建一个清单列表来捆绑这些镜像,检查已创建的清单列表以验证其内容,最后将清单列表推送到镜像仓库,这样你的多架构镜像就能在各种平台上进行部署啦。

准备多架构镜像

在这一步中,我们将准备多架构镜像。多架构镜像允许你构建并推送可在不同架构(如 CODE0CODE1)上运行的镜像。这对于将应用程序部署到各种环境(包括云服务器、边缘设备和本地机器)非常有用。

首先,我们需要在 Docker 中启用实验性功能。这能让我们使用 CODE_0 命令,该命令是构建多架构镜像所必需的。我们可以通过创建或修改 Docker 配置文件来实现这一点。

使用 CODE_0 打开 Docker 配置文件:

nano ~/.docker/config.json

如果该文件不存在,CODE0 会创建它。将以下内容添加到文件中。如果文件已经存在,则在主 JSON 对象中添加 CODE1 这一行。

{
  "experimental": "enabled"
}

CODE0,然后按 CODE1,再按 CODE_2 保存文件。

接下来,我们需要创建一个支持多种架构的新构建器实例。构建器实例是管理构建过程的 Docker 组件。

创建一个名为 CODE_0 的新构建器实例:

docker buildx create --name mybuilder --use

此命令创建一个名为 CODE_0 的新构建器实例,并将其设置为后续构建操作的默认构建器。输出应表明构建器已创建并正在使用。

现在,让我们构建一个简单的多架构镜像。我们将使用一个基本的 CODE_0,它基于 Alpine Linux 创建一个镜像。

为我们的项目创建一个目录并进入该目录:

mkdir ~/project/multiarch-demo
cd ~/project/multiarch-demo

在这个目录中创建一个 CODE_0

nano Dockerfile

将以下内容添加到 CODE_0 中:

FROM alpine:latest
CMD ["echo", "Hello from multi-architecture image!"]

CODE0,然后按 CODE1,再按 CODE2 保存 CODE3

现在,为 CODE0CODE1 架构构建镜像,并将其推送到一个虚拟镜像仓库。我们将使用 CODE_2 作为镜像仓库的占位符。在实际场景中,你需要将其替换为你实际的镜像仓库地址。

构建并推送多架构镜像:

docker buildx build --platform linux/amd64,linux/arm64 -t localhost:5000/multiarch-demo:latest --push .

此命令为指定的平台(CODE0CODE1)构建镜像,将其标记为 CODE2,并将其推送到 CODE3 镜像仓库。输出将显示每个架构的构建过程和推送操作。

为镜像创建清单列表

在这一步中,我们将为上一步构建的多架构镜像创建一个清单列表(manifest list)。清单列表是一个镜像清单的集合,每个清单对应一种不同的架构。当你使用清单列表拉取镜像时,Docker 会自动为你的架构选择正确的镜像。

我们将使用 CODE_0 命令来创建清单列表。该命令需要你指定要创建的清单列表的名称,后面跟着要包含在列表中的镜像名称。

创建一个名为 CODE_0 的清单列表:

docker manifest create localhost:5000/multiarch-demo:latest 
  localhost:5000/multiarch-demo:latest@sha256:$(docker buildx imagetools inspect localhost:5000/multiarch-demo:latest | grep 'Digest:' | awk '{print $2}' | head -n 1) 
  localhost:5000/multiarch-demo:latest@sha256:$(docker buildx imagetools inspect localhost:5000/multiarch-demo:latest | grep 'Digest:' | awk '{print $2}' | tail -n 1)

让我们来拆解一下这个命令:

  • CODE_0:这指定了我们要创建的清单列表的名称。
  • CODE0:这些是我们要添加到清单列表中的镜像。我们使用镜像名称,后面跟着 CODE1 和镜像的摘要(digest)。摘要可以唯一标识一个特定的镜像层。
  • CODE0:这个命令链用于获取 CODE1 列出的第一个镜像的摘要。
  • CODE0:这个命令链用于获取 CODE1 列出的第二个镜像的摘要。

CODE_0 命令的输出将是新创建的清单列表的摘要。

检查已创建的清单列表

在这一步中,我们将检查上一步创建的清单列表(manifest list)。检查清单列表可以让你查看列表中包含哪些镜像及其详细信息,例如架构和操作系统。

我们将使用 CODE_0 命令来查看清单列表的详细信息。

检查清单列表 CODE_0

docker manifest inspect localhost:5000/multiarch-demo:latest

此命令的输出将是一个描述清单列表的 JSON 文档。你应该会看到一个 "manifests" 数组,每个元素代表一个不同架构的镜像。在每个清单条目中查找 CODE0 字段,以查看架构和操作系统信息。你应该会看到 CODE1CODE_2 的条目。

这次检查确认了我们的清单列表正确包含了为不同架构构建的镜像。

将清单列表推送到镜像仓库

在这一步中,我们将把创建好的清单列表(manifest list)推送到镜像仓库(registry)。推送清单列表后,其他人就可以拉取这个多架构镜像了。当有人使用清单列表的标签拉取镜像时,Docker 会自动为他们系统的架构下载正确的镜像。

我们将使用 CODE_0 命令来推送清单列表。

将清单列表 CODE_0 推送到镜像仓库:

docker manifest push localhost:5000/multiarch-demo:latest

这个命令会将清单列表以及它引用的所有镜像推送到指定的镜像仓库(CODE0)。由于我们在第一步中已经使用 CODE1 推送了各个镜像,所以这个命令主要是推送清单列表本身。

输出会显示清单列表的推送进度。

推送清单列表后,你可以验证它是否已在镜像仓库中可用。虽然在这个实验环境中我们没有运行中的镜像仓库来直接查询,但 CODE_0 命令的成功执行表明清单列表已准备好推送。

为了模拟拉取多架构镜像并验证 Docker 是否选择了正确的架构,你可以尝试在不同架构的系统上拉取该镜像(如果有条件的话)。不过,在这个实验环境中,我们可以依靠推送命令的成功执行和之前的检查步骤来确认清单列表已准备就绪。

总结

本次实验聚焦于利用Docker准备多架构镜像。其中,需在Docker中启用实验性功能以运用 CODE0 命令,此命令对构建与 CODE1 和 CODE2 等不同架构兼容的镜像起着决定性作用。我们通过对 CODE3 文件的修改来配置Docker客户端,进而开启实验性功能。接着,运用 CODE4 创建了名为 CODE5 的新构建器实例,它具备管理多架构构建的能力。最后,设置了一个基础的项目目录,并以Alpine Linux为基础创建了简单的 CODE_6,作为构建多架构镜像的基石。

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

热门关注