Arquitecturas más comunes:
- linux/amd64 (x86_64): Servidores tradicionales, VPS, la mayoría de infraestructura cloud.
- linux/arm64 (aarch64): Servidores ARM, Raspberry Pi 4+.
1. Preparar tu entorno
1.1 Verificar Docker Buildx
Docker Buildx es una herramienta que amplía las capacidades de las compilaciones de Docker, este ya viene incluido en Docker Desktop y Docker Engine en la ultimas versiones:
docker buildx version
Despues de ejecutar este comando te debe salir la version de buildx.
Ejecución del comando "docker buildx version"
1.2 Crear un builder multi-arquitectura
# Crear y usar un nuevo builder
sudo docker buildx create --name multiarch-builder --use --bootstrap
# Verificar capacidades
sudo docker buildx inspect multiarch-builder
En multiarch-builder
le puedes colocar cualquier nombre.
Ejecución del comando "sudo docker buildx create --name multiarch-builder --use --bootstrap"
2. Construir una imagen multi-arquitectura
2.1 Dockerfile Base
Este es un ejemplo de un Dockerfile cualquiera.
FROM alpine:latest
RUN apk add --no-cache curl
COPY app.sh /app.sh
RUN chmod +x /app.sh
CMD ["/app.sh"]
2.2 Construcción de imagen
Con el siguiente comando de Docker puedes crear la imágen que funcione en diferentes arquitecturas de CPU, en este caso para amd64
y arm64
.
docker buildx build \
--platform linux/amd64,linux/arm64 \
-t tu-usuario/mi-app:latest \
. \
--push
Desglose del comando:
- --platform: Lista de arquitecturas separadas por comas.
- -t: Tag de la imagen.
- --push: Sube automáticamente al registry (obligatorio para multi-arch).
Ilustración que muestra a modo general cómo funciona el buildx
3 Probar en diferentes arquitecturas
Este es un comando muy util que debes conocer para seleccionar con que arquitectura correr la imagen.
# Forzar arquitectura específica
docker run --platform linux/arm64 tu-usuario/mi-app:latest
Tambien puedes decidir esto en docker-compose
con el plataform
:
services:
app:
image: tu-usuario/mi-app:latest
platform: linux/arm64
Conclusión
Construir imágenes Docker multi-arquitectura es esencial en el ecosistema actual, donde tus aplicaciones pueden ejecutarse en infraestructuras muy diversas. Con Docker Buildx y las técnicas mostradas en este tutorial, puedes desplegar en cualquier arquitectura sin modificar código y aprovechar servidores ARM más económicos.