Criando imagens Docker para arquitetura ARM

Neste breve artigo, eu mostro o que é preciso para criar uma imagem Docker ARM a partir de um Ubuntu x86-64.

Motivação

Atualmente, eu tenho um pequeno cluster Kubernetes utilizando o K3S, o cluster está instalado em uma máquina de arquitetura ARM e tive alguns problemas ao tentar gerar imagens para esta plataforma. A arquitetura da minha máquina é x86-64 e o alvo seria uma arquitetura ARM.

Recursos necessários

Primeiramente é necessário possuir o Docker instalado na sua máquina. Além disso, é necessário instalar algumas dependências do sistema para podermos emular o ambiente ARM, uma vez que estamos utilizando um Ubuntu x86-64. A dependência em questão é o Qemu que utiliza o KVM para virtualizar o ambiente ARM.

Docker Build

Em um cenário convencional, um comando para gerar uma imagem docker seria algo semelhante ao formato abaixo, o comando uma imagem chamada your-registry/image-name:

docker build -t your-registry/image-name -f path/Dockerfile .

Caso você queira compilar o Dockerfile para uma arquitetura diferente, será necessário trocar o comando docker build pelo comando docker buildx build, como mostrado abaixo:

docker buildx build --platform linux/arm64 --push -t your-registry/image-name -f path/Dockerfile .

Você pode reparar que foram incluídos alguns parâmetros novos:

Dica adicional

Tenha paciência, porque a virtualização proporciona uma build extremamente lento. Em alguns testes realizados, o build demorou 5 vezes mais que o formato convencional.

comments powered by Disqus