简介
在本实验中,你将学习如何使用 docker buildx ls
命令列出构建器实例及其关联节点。你将探索该命令的基本用法,查看可用的构建环境及其配置。
此外,你还将了解如何通过 Go 模板格式化 docker buildx ls
的输出,从而自定义显示信息。这包括格式化输出以展示特定字段,以及可视化构建器实例与其节点之间的关系。
在本实验中,你将学习如何使用 docker buildx ls
命令列出构建器实例及其关联节点。你将探索该命令的基本用法,查看可用的构建环境及其配置。
此外,你还将了解如何通过 Go 模板格式化 docker buildx ls
的输出,从而自定义显示信息。这包括格式化输出以展示特定字段,以及可视化构建器实例与其节点之间的关系。
在本步骤中,你将学习如何使用 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 模板来格式化 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 模板来格式化输出。这让你能够通过为不同字段指定占位符来自定义显示信息,从而仅提取并展示与构建器实例和节点相关的关键数据。