如何使用 docker buildx create 命令管理构建器

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker buildx create 命令高效管理 Docker 构建器。我们将涵盖以下核心操作:创建新的构建器实例、向现有构建器添加新节点、为构建器和节点指定自定义名称、设置构建节点支持的平台架构,以及自动切换到新创建的构建器进行构建操作。完成本实验后,你将掌握如何配置和运用不同的构建器方案来实现多架构和分布式构建。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/rm("Remove Container") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") subgraph Lab Skills docker/ls -.-> lab-555046{{"如何使用 docker buildx create 命令管理构建器"}} docker/rm -.-> lab-555046{{"如何使用 docker buildx create 命令管理构建器"}} docker/inspect -.-> lab-555046{{"如何使用 docker buildx create 命令管理构建器"}} docker/create -.-> lab-555046{{"如何使用 docker buildx create 命令管理构建器"}} end

创建新的构建器实例

在本步骤中,我们将学习如何使用 docker buildx create 命令创建新的构建器实例。构建器实例是用于管理多个构建节点的 Docker 对象,每个节点可以代表不同的架构或镜像构建环境。

在创建新构建器之前,我们先检查系统中现有的构建器。你可以使用 docker buildx ls 命令查看:

docker buildx ls

你应该能看到默认的构建器实例,通常名为 default

现在我们来创建一个名为 mybuilder 的新构建器实例:

docker buildx create --name mybuilder

该命令会创建一个名为 mybuilder 的新构建器实例。默认情况下,这个新构建器尚未关联任何节点,我们将在后续步骤中添加节点。

创建新构建器后,你可以再次列出构建器来查看新建的实例:

docker buildx ls

现在你应该能看到 defaultmybuilder 两个构建器。由于 mybuilder 尚未配置活动节点,它当前会显示为未激活状态。

向现有构建器添加新节点

在上一步中,我们创建了一个名为 mybuilder 的新构建器实例。目前该构建器尚未包含任何构建节点。本步骤将向这个现有构建器添加新节点。

构建节点本质上是一个运行构建过程的 Docker 端点。默认情况下,当你创建新构建器时未指定节点,系统会创建一个不包含活动节点的构建器。

要向 mybuilder 构建器添加新节点,我们将再次使用 docker buildx create 命令,但这次会通过 --append 标志指定目标构建器:

docker buildx create --name mybuilder --append

此命令会向 mybuilder 构建器添加新节点。默认情况下,当你不指定节点名称时,Docker Buildx 会自动为其生成名称。

让我们再次列出构建器,查看已添加新节点的 mybuilder 实例:

docker buildx ls

现在你应该能看到 mybuilder 下列出了一个节点。该节点将具有自动生成的名称,并且很可能处于运行状态。

为构建器和节点指定名称

在前面的步骤中,我们创建了名为 mybuilder 的构建器并为其添加了节点,该节点被自动分配了一个生成名称。本步骤将学习如何在创建时为构建器和节点指定名称。

首先,让我们移除之前创建的 mybuilder 构建器以便重新开始:

docker buildx rm mybuilder

现在,我们将创建一个新的构建器实例,将其命名为 custombuilder,同时为该构建器内的初始节点命名为 node1。这可以通过 --name 标志指定构建器名称,以及 --node 标志指定节点名称来实现:

docker buildx create --name custombuilder --node node1

此命令会创建一个名为 custombuilder 的新构建器实例,并在其中创建名为 node1 的初始节点。

让我们列出构建器来确认名称设置:

docker buildx ls

现在你应该能看到列出的 custombuilder 构建器,其下方会显示名为 node1 的节点。这种方式让你能更好地组织和识别构建器与节点。

设置节点支持的平台架构

在本步骤中,我们将学习如何指定构建节点支持的平台架构。这对于构建多架构镜像至关重要。默认情况下,节点仅支持其运行主机的原生架构。但通过 Buildx,你可以配置节点使用模拟器(如 QEMU)来支持更多平台架构。

首先,让我们检查上一步创建的 custombuilder,查看其节点当前支持的平台:

docker buildx inspect custombuilder

在输出结果中查找 "Platforms" 字段,它应该显示你的 LabEx 虚拟机原生架构(例如 linux/amd64)。

现在,我们将更新 custombuilder 中的 node1 节点以支持更多平台架构。使用 docker buildx create 命令配合 --append--platform 标志,添加对 linux/arm64linux/riscv64 的支持:

docker buildx create --name custombuilder --append --node node1 --platform linux/arm64,linux/riscv64

注意这里我们使用 --append 参数配合现有的构建器名称和节点名称。该命令会更新 custombuilder 中现有的 node1 节点,使其包含指定的平台架构。

再次检查构建器,查看 node1 更新后的平台支持情况:

docker buildx inspect custombuilder

现在 node1 的 "Platforms" 字段应包含 linux/amd64linux/arm64linux/riscv64,这意味着该节点现在能够为这些架构构建镜像。

自动切换到新创建的构建器

在这最后一步中,我们将学习如何自动切换到使用新创建的构建器实例。当你拥有多个构建器时,需要明确告知 Docker Buildx 使用哪个构建器来执行构建操作。

默认情况下,Docker Buildx 会使用 default 构建器。你可以通过 docker buildx ls 命令的输出查看当前激活的构建器 - 活跃构建器名称旁会带有星号 (*) 标记。

docker buildx ls

要切换到我们创建的 custombuilder,可以使用 docker buildx use 命令后接构建器名称:

docker buildx use custombuilder

此命令会将 custombuilder 设为当前活跃构建器。之后所有的 docker buildx build 命令都将使用 custombuilder 中配置的节点。

让我们再次列出构建器来验证 custombuilder 已成为活跃构建器:

docker buildx ls

现在你应该能在 custombuilder 旁看到星号 (*),这表示它已是当前活跃构建器。

至此,你已成功完成:创建新构建器实例、为其添加节点、为两者指定名称、设置节点支持的平台架构,并切换到使用这个新构建器。

总结

在本实验中,我们学习了如何使用 docker buildx create 命令管理 Docker 构建器。我们首先创建了一个名为 mybuilder 的新构建器实例,演示了如何初始化独立的构建环境。接着探索了如何向现有构建器追加新的构建节点,有效地为 mybuilder 实例添加构建端点。

此外,我们还介绍了如何为构建器及其节点指定自定义名称,以提高组织性和清晰度。同时学习了如何定义特定构建节点支持的平台架构,实现针对性构建。最后,我们实践了自动切换到新创建的构建器,使其成为后续构建操作的活跃构建器。