Executando verificação de segurança...
3

Build de imagem Docker para múltiplas arquiteturas

Para executar uma imagem Docker, é necessário que ela seja compatível com a arquitetura das máquinas que serão utilizadas (x86_64 ou arm64).

Considerando um cenário de computação em cloud pública, como a AWS por exemplo, podemos variar a arquitetura das máquinas utilizadas com uma certa frequência, inclusive variar a arquitetura das máquinas utilizadas em diferentes nodes dentro de um mesmo cluster EKS.

Visando tornar nossa imagem Docker mais versátil, podemos optar por realizar o build da imagem para múltiplas arquiteturas, atendendo assim todos os cenários desejados. Aqui irei realizar o build de um imagem Docker tanto para a arquitetura linux/amd64 quanto para linux/arm64.

Configuração do driver do Buildx

Por padrão o docker buildx usa o driver docker que não suporta a construção simultânea de imagens para múltiplas arquiteturas (cross-compilation).

Para construir a imagem Multi-Arquitetura (linux/amd64, linux/arm64), é necessário mudar o driver para um que suporte recursos avançados, como o driver docker-container, que usa uma builder instance baseada em containers.

1 Criar um novo Builder

Crie uma nova instância de builder chamada multiarch (ou o nome que preferir) usando o docker-container.

docker buildx create --name multiarch --driver docker-container --use
  • '--name multiarch': Nomeia a nova instância.
  • '--driver docker-container': Força o uso de um builder baseado em container, que é o que permite a compilação multi-arquitetura.
  • '--use': Define esta nova instância como o builder ativo imediatamente.

2 Verificar o status do Builder

Confirme que o novo builder está ativo.

docker buildx inspect --bootstrap

3 Execute o Build Multi-Arquitetura

Utilizando o seguinte comando como exemplo, realize o build da imagem Docker.

docker buildx build --platform linux/amd64,linux/arm64 -t <image-name>:latest --push .

4 Limpeza (Opcional)

4.1 Retorne ao Builder padrão

docker buildx use default

4.2 Remover instância do Builder multiarch

docker buildx rm multiarch
Carregando publicação patrocinada...