如何使用 docker buildx ls 命令列出构建器实例

DockerDockerBeginner
立即练习

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

简介

在本实验中,你将学习如何使用 docker buildx ls 命令列出构建器实例及其关联节点。你将探索该命令的基本用法,查看可用的构建环境及其配置。

此外,你还将了解如何通过 Go 模板格式化 docker buildx ls 的输出,从而自定义显示信息。这包括格式化输出以展示特定字段,以及可视化构建器实例与其节点之间的关系。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") subgraph Lab Skills docker/ls -.-> lab-555060{{"如何使用 docker buildx ls 命令列出构建器实例"}} end

列出所有构建器实例和节点

在本步骤中,你将学习如何使用 docker buildx ls 命令列出所有构建器实例及其节点。该命令有助于了解可用的构建环境及其配置。

首先,我们执行基础命令来列出构建器实例和节点:

docker buildx ls

你将看到类似以下的输出:

NAME/NODE       DRIVER/ENDPOINT STATUS  BUILDKIT             PLATFORMS
default         docker
  default       docker          running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x

输出结果展示了构建器实例及其关联节点的信息。各列含义如下:

  • NAME/NODE 列显示构建器实例名称及其包含的节点名称
  • DRIVER/ENDPOINT 列表示节点使用的驱动类型和端点
  • STATUS 列显示节点当前状态(如 running
  • BUILDKIT 列展示 BuildKit 版本信息
  • PLATFORMS 列列出节点支持的平台架构

在此示例中,我们可以看到名为 default 的构建器实例包含一个同名节点。该节点使用 docker 驱动,当前状态为 running,并支持多种平台架构。

使用 Go 模板格式化输出

在本步骤中,你将学习如何使用 Go 模板来格式化 docker buildx ls 命令的输出。Go 模板提供了一种灵活的方式来定制输出格式,仅显示你需要的信息。

通过 --format 标志,你可以指定一个 Go 模板。该模板使用诸如 {{.Name}}{{.Driver}}{{.Status}} 等占位符来访问构建器实例和节点对象的不同字段。

让我们尝试格式化输出,仅显示构建器实例和节点的名称及驱动类型:

docker buildx ls --format "{{.Name}}\t{{.Driver}}"

你将看到类似以下的输出:

default docker
default docker

在这个模板中:

  • {{.Name}} 表示构建器或节点的名称
  • {{.Driver}} 表示驱动类型
  • \t 用于在名称和驱动类型之间插入制表符,提高可读性

这个示例展示了如何使用简单的 Go 模板从 docker buildx ls 输出中提取特定信息。在后续步骤中,我们将探索更复杂的模板来实现不同的输出格式。

使用特定字段格式化输出

在本步骤中,我们将继续探索如何使用 Go 模板来格式化 docker buildx ls 的输出,并显示你感兴趣的特定字段。你可以从构建器实例和节点对象中选择各种字段,将其包含在自定义输出中。

让我们格式化输出,显示每个构建器节点的名称、状态和支持的平台:

docker buildx ls --format "{{.Name}}\t{{.Status}}\t{{.Platforms}}"

你将看到类似以下的输出:

default running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x
default running linux/amd64, linux/arm64, linux/riscv64, linux/ppc64le, linux/s390x

在这个模板中:

  • {{.Name}} 表示构建器节点的名称
  • {{.Status}} 表示构建器节点的状态(如 running
  • {{.Platforms}} 表示构建器节点支持的平台列表

我们再次使用 \t 通过制表符分隔字段,这能让你快速查看每个节点的状态和支持的平台。

你可以根据需求在模板中组合不同的字段。尝试包含其他字段如 {{.Driver}}{{.Buildkit}},观察输出结果的变化。

格式化输出以显示构建器与节点的关系

在本步骤中,我们将使用更高级的 Go 模板来可视化构建器实例与其节点之间的关系。当你配置了多个构建器实例和节点时,这会特别有用。

我们可以在 Go 模板中使用条件语句和循环来实现这一目的。不过为了简单起见,并专注于基本格式化,我们将创建一个能清晰显示节点所属构建器实例的模板。

让我们使用一个模板,先打印构建器名称,然后缩进显示其节点:

docker buildx ls --format "{{range .}}{{if .Builder}}{{.Name}} (Builder){{range .Nodes}}\n  - {{.Name}} (Node){{end}}{{else}}\n{{.Name}} (Node){{end}}{{end}}"

你将看到类似以下的输出:

default (Builder)
  - default (Node)

让我们解析这个模板:

  • {{range .}}...{{end}}:遍历构建器实例和节点列表
  • {{if .Builder}}...{{else}}...{{end}}:检查当前项是否为构建器实例(.Builder 为 true)
  • 如果是构建器:
    • {{.Name}} (Builder):打印构建器名称并标注"(Builder)"
    • {{range .Nodes}}...{{end}}:遍历当前构建器中的节点
    • \n - {{.Name}} (Node):打印换行符、缩进、"- "、节点名称和"(Node)"
  • 如果不是构建器(在基本配置中较少见,表示独立节点):
    • \n{{.Name}} (Node):打印换行符、节点名称和"(Node)"

这个模板提供了结构化的输出,能清晰显示哪些节点属于哪些构建器实例。虽然这个例子中只有一个构建器和一个节点显得简单,但当你的 buildx 配置更复杂时,这个模板会变得非常实用。

总结

在本实验中,你学习了如何使用 docker buildx ls 命令来列出构建器实例及其关联节点。你首先执行了基础命令查看默认输出,其中包含了构建器名称、节点名称、驱动类型、状态、BuildKit 版本和支持平台等详细信息。

此外,你还探索了如何通过 --format 标志使用 Go 模板来格式化输出。这让你能够通过为不同字段指定占位符来自定义显示信息,从而仅提取并展示与构建器实例和节点相关的关键数据。