如何使用 docker buildx use 命令切换构建器实例

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker buildx use 命令管理和切换不同的 Docker 构建器(builder)实例。我们将首先创建多个构建器实例,为构建 Docker 镜像提供不同选择。

创建这些实例后,你将学习如何列出所有可用的构建器实例,查看它们的详细信息和状态。本实验的核心内容将聚焦于使用 docker buildx use 命令切换到特定的构建器实例以执行构建操作。最后,你还将探索如何将某个构建器设置为当前上下文的默认选项,以及如何配置构建器以持久化上下文变更。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/ls -.-> lab-555064{{"如何使用 docker buildx use 命令切换构建器实例"}} docker/create -.-> lab-555064{{"如何使用 docker buildx use 命令切换构建器实例"}} docker/build -.-> lab-555064{{"如何使用 docker buildx use 命令切换构建器实例"}} end

创建多个构建器实例

在本步骤中,我们将学习如何使用 Docker 创建多个构建器(builder)实例。构建器实例用于构建 Docker 镜像。默认情况下,Docker 使用单个构建器实例,但你可以创建多个实例来提升构建性能或使用不同的构建配置。

首先,让我们检查当前的构建器实例。

docker buildx ls

你应该会看到一个默认的构建器实例。现在,让我们创建一个名为 mybuilder1 的新构建器实例。

docker buildx create --name mybuilder1

该命令会创建一个新的构建器实例。你可以通过再次列出构建器实例来验证新实例是否已创建。

docker buildx ls

现在你应该能看到默认构建器和 mybuilder1 两个实例。

让我们再创建一个名为 mybuilder2 的构建器实例。

docker buildx create --name mybuilder2

同样地,验证新实例的创建情况。

docker buildx ls

此时你应该能看到默认构建器、mybuilder1mybuilder2 三个实例。

列出可用构建器实例

在上一步中,我们创建了多个构建器实例。本步骤将重点介绍如何列出这些可用的构建器实例,查看它们的状态和详细信息。

列出构建器实例的命令是 docker buildx ls。该命令会显示系统中所有可用的构建器实例信息。

让我们再次执行该命令,查看上一步创建的构建器实例:

docker buildx ls

输出结果将显示一个包含以下列的数据表:NAME(名称)、DRIVER(驱动)、ENDPOINT(端点)、STATUS(状态)和 BUILDER(当前构建器)。

  • NAME:构建器实例的名称
  • DRIVER:构建器实例使用的驱动(如 docker-container
  • ENDPOINT:构建器连接的端点
  • STATUS:构建器实例的当前状态(如 running 运行中、stopped 已停止)
  • BUILDER:标识该实例是否为当前使用的构建器

在输出中,你应该能看到默认构建器、mybuilder1mybuilder2。已创建的构建器在 STATUS 列会显示为 running(如果已自动启动)或 stopped(如果未启动)。

该命令非常有用,可以在切换或使用构建器进行镜像构建前,检查哪些构建器可用及其当前状态。

切换到指定构建器实例

在本步骤中,我们将学习如何切换到特定的构建器实例。当你拥有多个构建器实例时,可以选择使用哪个实例来构建 Docker 镜像。

要切换到特定构建器实例,需要使用 docker buildx use 命令后接构建器实例名称。

让我们切换到之前步骤中创建的 mybuilder1 实例:

docker buildx use mybuilder1

执行此命令后,mybuilder1 实例将成为当前 Docker 上下文的活跃构建器。

你可以通过再次列出构建器实例来验证当前活跃的构建器。活跃构建器会在 BUILDER 列中用星号 (*) 标记:

docker buildx ls

在输出中,你应该能看到 mybuilder1 旁边带有星号,表示这是当前活跃的构建器。

现在,让我们切换到 mybuilder2 实例:

docker buildx use mybuilder2

验证 mybuilder2 是否已成为当前活跃构建器:

docker buildx ls

此时你应该能看到 mybuilder2 旁边带有星号。

通过切换不同的构建器实例,你可以根据需要轻松使用不同的构建环境或配置。

为当前上下文设置默认构建器

在上一步中,我们学习了如何为当前会话切换到特定构建器实例。本步骤将介绍如何为当前 Docker 上下文设置默认构建器实例。这意味着在该上下文中使用 Docker 命令时,将自动使用指定的构建器。

要为当前上下文设置默认构建器,需使用带 --default 标志的 docker buildx use 命令,后接构建器实例名称。

让我们将 mybuilder1 设置为当前上下文的默认构建器:

docker buildx use --default mybuilder1

执行此命令后,mybuilder1 将成为该上下文的默认构建器。

你可以通过列出构建器实例来验证此设置。默认构建器会在输出中同时标有星号 (*) 和 default 标识:

docker buildx ls

此时应能看到 mybuilder1 同时标记为活跃构建器(带 *)和默认构建器。

现在,我们将 mybuilder2 设为默认构建器:

docker buildx use --default mybuilder2

验证 mybuilder2 是否已成为默认构建器:

docker buildx ls

此时应能看到 mybuilder2 同时标记为活跃和默认状态。

当你在特定 Docker 上下文中需要持续使用某个特定构建器进行项目构建时,设置默认构建器会非常实用。

设置构建器以持久化上下文变更

在前面的步骤中,我们学习了如何切换构建器以及为当前上下文设置默认构建器。但根据你的 Docker 配置,这些变更可能不会在不同终端会话或系统重启后保持。本步骤将探讨如何确保你选择的构建器在关闭/重新打开终端或重启 Docker 守护进程后仍保持默认状态。

docker buildx use --default 命令会为当前 Docker 上下文设置默认构建器。该设置通常存储在 Docker 配置文件中。要确保变更持久化,通常只需设置默认构建器即可,无需额外命令。--default 标志的设计目的就是让变更在特定上下文中持久化。

让我们再次确认 mybuilder2 是否已设为默认构建器:

docker buildx ls

此时仍应看到 mybuilder2 被标记为默认构建器。

该设置的持久性依赖于 Docker 的配置管理机制。当你使用 docker buildx use --default 时,Docker 会更新其配置以反映当前上下文的这一选择。这些配置会在 Docker 启动时加载,确保默认使用你偏好的构建器。

虽然除了使用 --default 外没有专门的"持久化"命令,但理解 --default 标志能在 Docker 上下文中处理持久化这一点很重要。

要真正测试持久性,通常需要重启 Docker 守护进程或打开新的终端会话,然后再次使用 docker buildx ls 检查默认构建器。在本实验环境中,--default 标志已足以演示为当前上下文设置持久化默认构建器的预期行为。

总结

在本实验中,我们学习了如何使用 docker buildx 命令管理 Docker 构建器实例。我们首先创建了多个构建器实例,演示了如何添加除默认构建器之外的新构建器。随后,我们通过 docker buildx ls 命令练习列出这些可用的构建器实例,查看它们的名称、驱动程序、端点及状态。这一步骤对于理解可用构建环境至关重要。