Como usar o comando docker buildx create para gerenciar construtores

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como gerenciar efetivamente os construtores Docker usando o comando docker buildx create. Abordaremos as etapas essenciais para criar uma nova instância de construtor, adicionar novos nós a um construtor existente, especificar nomes personalizados para construtores e nós, definir as plataformas suportadas para um nó de construção e alternar automaticamente para um construtor recém-criado para suas operações de construção. Ao final deste laboratório, você terá uma sólida compreensão de como configurar e utilizar diferentes configurações de construtores para construções multi-arquitetura e distribuídas.

Criar uma nova instância de construtor

Nesta etapa, aprenderemos como criar uma nova instância de construtor usando o comando docker buildx create. Uma instância de construtor é um objeto Docker que gerencia múltiplos nós de construção. Cada nó pode representar uma arquitetura ou ambiente diferente para a construção de imagens.

Antes de criar um novo construtor, vamos verificar os construtores existentes em seu sistema. Você pode fazer isso usando o comando docker buildx ls.

docker buildx ls

Você deve ver a instância de construtor padrão, que geralmente é chamada de default.

Agora, vamos criar uma nova instância de construtor. Vamos nomear este novo construtor como mybuilder.

docker buildx create --name mybuilder

Este comando cria uma nova instância de construtor chamada mybuilder. Por padrão, este novo construtor ainda não terá nenhum nó associado a ele. Adicionaremos nós nas próximas etapas.

Após criar o novo construtor, você pode listar os construtores novamente para ver o recém-criado.

docker buildx ls

Você agora deve ver tanto o construtor default quanto o construtor mybuilder listados. O construtor mybuilder será listado como inativo por enquanto, pois não possui nenhum nó ativo.

Anexar um novo nó a um construtor existente

Na etapa anterior, criamos uma nova instância de construtor chamada mybuilder. Atualmente, este construtor não possui nenhum nó de construção. Nesta etapa, adicionaremos um novo nó a este construtor existente.

Um nó de construção é essencialmente um endpoint Docker onde o processo de construção será executado. Por padrão, quando você cria um novo construtor sem especificar um nó, ele é criado sem nenhum nó ativo.

Para adicionar um novo nó ao construtor mybuilder, usaremos o comando docker buildx create novamente, mas desta vez especificaremos o construtor ao qual queremos adicionar o nó usando a flag --append. Adicionaremos um nó ao construtor mybuilder.

docker buildx create --name mybuilder --append

Este comando adiciona um novo nó ao construtor mybuilder. Por padrão, quando você adiciona um nó sem especificar um nome, o Docker Buildx gerará um nome para ele.

Vamos listar os construtores novamente para ver a instância mybuilder atualizada com o novo nó.

docker buildx ls

Você agora deve ver mybuilder listado com um nó abaixo dele. O nó terá um nome gerado e provavelmente estará em um estado de execução.

Especificar um nome para o construtor e nó

Nas etapas anteriores, criamos um construtor chamado mybuilder e adicionamos um nó a ele. O nó recebeu automaticamente um nome gerado. Nesta etapa, aprenderemos como especificar nomes para o construtor e o nó ao criá-los.

Primeiro, vamos remover o construtor mybuilder que criamos nas etapas anteriores para que possamos começar do zero.

docker buildx rm mybuilder

Agora, vamos criar uma nova instância de construtor e especificar seu nome como custombuilder. Também especificaremos um nome para o nó inicial dentro deste construtor como node1. Podemos fazer isso usando a flag --name para o construtor e a flag --node para o nó.

docker buildx create --name custombuilder --node node1

Este comando cria uma nova instância de construtor chamada custombuilder e um nó inicial dentro dela chamado node1.

Vamos listar os construtores para confirmar os nomes.

docker buildx ls

Você agora deve ver custombuilder listado e, abaixo dele, você deve ver o nó chamado node1. Isso oferece mais controle sobre como seus construtores e nós são organizados e identificados.

Definir as plataformas suportadas por um nó

Nesta etapa, aprenderemos como especificar as plataformas que um nó de construção suporta. Isso é crucial para construir imagens de múltiplas arquiteturas. Por padrão, um nó suportará a arquitetura do host em que está sendo executado. No entanto, com o Buildx, você pode configurar nós para suportar plataformas adicionais usando emulação (como QEMU).

Primeiro, vamos inspecionar o custombuilder que criamos na etapa anterior para ver as plataformas suportadas por seu nó.

docker buildx inspect custombuilder

Procure o campo "Platforms" na saída. Ele deve mostrar a arquitetura nativa da sua VM LabEx (por exemplo, linux/amd64).

Agora, vamos atualizar o node1 dentro de custombuilder para suportar plataformas adicionais. Podemos usar o comando docker buildx create com a flag --append e a flag --platform. Adicionaremos suporte para linux/arm64 e linux/riscv64.

docker buildx create --name custombuilder --append --node node1 --platform linux/arm64,linux/riscv64

Observe que estamos usando --append com o nome do construtor e o nome do nó existentes. Este comando atualiza o nó existente node1 dentro de custombuilder para incluir as plataformas especificadas.

Vamos inspecionar o construtor novamente para ver as plataformas atualizadas para node1.

docker buildx inspect custombuilder

O campo "Platforms" para node1 agora deve incluir linux/amd64, linux/arm64 e linux/riscv64. Isso significa que este nó agora é capaz de construir imagens para essas arquiteturas.

Mudar automaticamente para o construtor recém-criado

Nesta etapa final, aprenderemos como mudar automaticamente para usar a instância do construtor recém-criada. Quando você tem vários construtores, você precisa informar ao Docker Buildx qual usar para suas operações de construção.

Por padrão, o Docker Buildx usa o construtor default. Você pode ver qual construtor está atualmente ativo observando a saída de docker buildx ls. O construtor ativo terá um asterisco (*) ao lado de seu nome.

docker buildx ls

Para mudar para o uso do custombuilder que criamos, você pode usar o comando docker buildx use seguido pelo nome do construtor.

docker buildx use custombuilder

Este comando define custombuilder como o construtor atualmente ativo. Quaisquer comandos docker buildx build subsequentes agora usarão os nós configurados dentro de custombuilder.

Vamos verificar se custombuilder é agora o construtor ativo, listando os construtores novamente.

docker buildx ls

Você agora deve ver um asterisco (*) ao lado de custombuilder, indicando que ele é o construtor ativo.

Você criou com sucesso uma nova instância de construtor, adicionou um nó a ela, especificou nomes para ambos, definiu as plataformas suportadas para o nó e mudou para o uso deste novo construtor.

Resumo

Neste laboratório, aprendemos como gerenciar construtores Docker usando o comando docker buildx create. Começamos criando uma nova instância de construtor chamada mybuilder, demonstrando como inicializar um ambiente de construção separado. Em seguida, exploramos como anexar um novo nó de construção a um construtor existente, adicionando efetivamente um ponto de extremidade de construção à nossa instância mybuilder.

Além disso, cobrimos como especificar nomes personalizados para o construtor e seus nós para melhor organização e clareza. Também aprendemos como definir as plataformas específicas (arquiteturas) que um determinado nó de construção suporta, permitindo construções direcionadas. Finalmente, praticamos a mudança automática para o construtor recém-criado, tornando-o o construtor ativo para operações de construção subsequentes.