Como usar o comando docker buildx ls para listar instâncias de builder

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker buildx ls para listar as instâncias de builder (construtor) e seus nós associados. Você explorará o uso básico do comando para visualizar os ambientes de construção disponíveis e suas configurações.

Além disso, você descobrirá como formatar a saída de docker buildx ls usando templates Go para personalizar as informações exibidas. Isso inclui formatar a saída para mostrar campos específicos e visualizar as relações entre as instâncias de builder e seus nós.

Listar todas as instâncias de builder e nós

Nesta etapa, você aprenderá como listar todas as instâncias de builder e nós usando o comando docker buildx ls. Este comando é útil para entender os ambientes de construção disponíveis e suas configurações.

Primeiramente, vamos executar o comando básico para listar as instâncias de builder e nós.

docker buildx ls

Você deve ver uma saída semelhante a esta:

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

A saída fornece informações sobre as instâncias de builder e seus nós associados. A coluna NAME/NODE mostra o nome da instância de builder e o nó dentro dessa instância. A coluna DRIVER/ENDPOINT indica o driver usado e o endpoint para o nó. A coluna STATUS mostra o status atual do nó (por exemplo, running). A coluna BUILDKIT exibe a versão do BuildKit. Finalmente, a coluna PLATFORMS lista as plataformas suportadas para o nó.

Neste exemplo, vemos uma instância de builder chamada default com um único nó também chamado default. Ele está usando o driver docker e está atualmente running. Ele suporta múltiplas plataformas.

Formatar a saída usando um template Go

Nesta etapa, você aprenderá como formatar a saída do comando docker buildx ls usando um template Go. Os templates Go fornecem uma maneira flexível de personalizar o formato da saída para exibir apenas as informações que você precisa.

A flag --format permite que você especifique um template Go. O template usa placeholders (marcadores) como {{.Name}}, {{.Driver}}, {{.Status}}, etc., para acessar os diferentes campos das instâncias de builder e objetos de nó.

Vamos tentar formatar a saída para mostrar apenas o nome e o driver das instâncias de builder e nós.

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

Você deve ver uma saída semelhante a esta:

default docker
default docker

Neste template, {{.Name}} representa o nome do builder ou nó, e {{.Driver}} representa o driver. O \t é usado para inserir um caractere de tabulação entre o nome e o driver para melhor legibilidade.

Isso demonstra como você pode usar um template Go simples para extrair informações específicas da saída de docker buildx ls. Nas etapas seguintes, exploraremos templates mais complexos para formatar a saída de diferentes maneiras.

Formatar a saída com campos específicos

Nesta etapa, continuaremos explorando templates Go para formatar a saída de docker buildx ls e exibir campos específicos de interesse. Você pode selecionar vários campos das instâncias de builder e objetos de nó para incluir em sua saída personalizada.

Vamos formatar a saída para mostrar o nome, o status e as plataformas suportadas para cada nó do builder.

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

Você deve ver uma saída semelhante a esta:

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

Neste template:

  • {{.Name}} refere-se ao nome do nó do builder.
  • {{.Status}} refere-se ao status do nó do builder (por exemplo, running).
  • {{.Platforms}} refere-se à lista de plataformas suportadas para o nó do builder.

Estamos usando \t novamente para separar os campos com tabulações. Isso permite que você veja rapidamente o status e as plataformas suportadas para cada nó.

Você pode combinar diferentes campos em seu template com base em suas necessidades. Experimente incluir outros campos como {{.Driver}} ou {{.Buildkit}} para ver como a saída muda.

Formatar a saída para mostrar as relações entre builder e nó

Nesta etapa, usaremos um template Go mais avançado para visualizar a relação entre as instâncias de builder e seus nós. Isso pode ser útil quando você tem múltiplas instâncias de builder e nós configurados.

Podemos usar declarações condicionais e loops dentro do template Go para conseguir isso. No entanto, para simplificar e focar na formatação básica, criaremos um template que mostra claramente qual nó pertence a qual instância de builder.

Vamos usar um template que imprime o nome do builder seguido por seus nós, com indentação.

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

Você deve ver uma saída semelhante a esta:

default (Builder)
  - default (Node)

Vamos detalhar este template:

  • {{range .}}...{{end}}: Isso itera sobre a lista de instâncias de builder e nós.
  • {{if .Builder}}...{{else}}...{{end}}: Isso verifica se o item atual é uma instância de builder (.Builder é verdadeiro).
  • Se for um builder:
    • {{.Name}} (Builder): Imprime o nome do builder seguido por "(Builder)".
    • {{range .Nodes}}...{{end}}: Isso itera sobre os nós dentro do builder atual.
    • \n - {{.Name}} (Node): Imprime uma nova linha, uma indentação, "- ", o nome do nó e "(Node)".
  • Se não for um builder (significando que é um nó autônomo, embora menos comum em configurações básicas):
    • \n{{.Name}} (Node): Imprime uma nova linha, o nome do nó e "(Node)".

Este template fornece uma saída estruturada que mostra claramente quais nós estão associados a quais instâncias de builder. Embora este exemplo seja simples com apenas um builder e um nó, este template se torna mais útil quando você tem uma configuração buildx mais complexa.

Resumo

Neste laboratório, você aprendeu como usar o comando docker buildx ls para listar as instâncias de builder e seus nós associados. Você começou executando o comando básico para ver a saída padrão, que fornece detalhes sobre o nome do builder, nome do nó, driver, status, versão do BuildKit e plataformas suportadas.

Além disso, você explorou como formatar a saída usando um template Go com a flag --format. Isso permite que você personalize as informações exibidas, especificando placeholders (espaços reservados) para diferentes campos, permitindo que você extraia e apresente apenas os dados relevantes sobre suas instâncias de builder e nós.