Введение
В этой лабораторной работе вы научитесь использовать команду docker buildx ls для вывода списка экземпляров сборщиков (builder instances) и связанных с ними узлов (nodes). Вы изучите базовое использование команды для просмотра доступных сред сборки и их конфигураций.
Кроме того, вы узнаете, как форматировать вывод docker buildx ls с помощью шаблонов Go (Go templates) для настройки отображаемой информации. Это включает форматирование вывода для отображения определённых полей и визуализации взаимосвязей между экземплярами сборщиков и их узлами.
Вывести список всех экземпляров сборщиков и узлов
На этом шаге вы узнаете, как вывести список всех экземпляров сборщиков (builder instances) и узлов (nodes) с помощью команды 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 указывает используемый драйвер и конечную точку (endpoint) для узла. В колонке STATUS показан текущий статус узла (например, running). Колонка BUILDKIT отображает версию BuildKit. Наконец, колонка PLATFORMS содержит список поддерживаемых платформ для узла.
В этом примере мы видим экземпляр сборщика с именем default и единственным узлом, также названным default. Он использует драйвер docker и в данный момент находится в статусе running. Поддерживаются несколько платформ.
Форматирование вывода с использованием Go шаблона
На этом шаге вы узнаете, как форматировать вывод команды docker buildx ls с помощью Go-шаблона. 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 для вывода списка экземпляров сборщиков (builder instances) и связанных с ними узлов (nodes). Вы начали с выполнения базовой команды для просмотра стандартного вывода, который содержит информацию о названии сборщика, имени узла, драйвере, статусе, версии BuildKit и поддерживаемых платформах.
Кроме того, вы изучили способы форматирования вывода с помощью Go-шаблонов, используя флаг --format. Это позволяет настраивать отображаемую информацию, указывая плейсхолдеры для различных полей, что даёт возможность извлекать и представлять только релевантные данные о ваших экземплярах сборщиков и узлах.



