Как использовать команду docker buildx ls для вывода списка экземпляров сборщиков

DockerDockerBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этой лабораторной работе вы научитесь использовать команду docker buildx ls для вывода списка экземпляров сборщиков (builder instances) и связанных с ними узлов (nodes). Вы изучите базовое использование команды для просмотра доступных сред сборки и их конфигураций.

Кроме того, вы узнаете, как форматировать вывод docker buildx ls с помощью шаблонов Go (Go templates) для настройки отображаемой информации. Это включает форматирование вывода для отображения определённых полей и визуализации взаимосвязей между экземплярами сборщиков и их узлами.


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

Вывод списка всех экземпляров сборщиков и узлов

На этом шаге вы узнаете, как вывести список всех экземпляров сборщиков (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. Это позволяет настраивать отображаемую информацию, указывая плейсхолдеры для различных полей, что даёт возможность извлекать и представлять только релевантные данные о ваших экземплярах сборщиков и узлах.