O Que É uma Imagem Multi-Arch? Uma Tag, Muitas CPUs
Uma imagem multi-arch é uma tag que discretamente resolve para a imagem certa da sua CPU - amd64 em um servidor Intel, arm64 em Apple Silicon - via uma manifest list.
Você pode ter notado que docker pull ubuntu simplesmente funciona tanto no seu laptop quanto em um servidor com uma CPU diferente. Isso é uma imagem multi-arch: uma única referência cuja manifest list aponta para uma imagem separada por arquitetura. O runtime seleciona transparentemente a correspondente.
A manifest list
Em vez de uma imagem, a tag aponta para uma manifest list (também chamada de image index). Cada entrada nomeia uma platform (linux/amd64, linux/arm64) e o digest da imagem construída para ela.
Como a seleção acontece
Quando você faz pull, o client informa sua platform; o registry serve o manifest, e o client escolhe a entrada correspondente. Você sempre digita a mesma tag - os bits certos chegam automaticamente.
Construindo uma
Use docker buildx build --platform linux/amd64,linux/arm64 ... --push. O buildx constrói cada arquitetura e publica a manifest list sob sua tag.
Por que você a quer
- Desenvolvedores em laptops arm e CI amd64 usam a mesma tag.
- Instâncias de nuvem arm64 são mais baratas para muitas workloads.
- Nenhuma lógica condicional para escolher uma tag específica de arch no deploy.
Multi-arch em CI
Construir cada arquitetura sob emulação em um único runner é lento. Construir cada uma em um runner nativo é muito mais rápido; a Latchkey fornece runners arm e x86 nativos para que builds multi-arch pulem o overhead de emulação.
Principais conclusões
- Uma imagem multi-arch é uma manifest list apontando para imagens por arquitetura.
- O runtime seleciona a arquitetura correspondente automaticamente no pull.
- Construa-as com o buildx; runners nativos evitam emulação lenta.