Avatar byandrev

byandrev

Construir Imágenes de Docker para Múltiples Arquitecturas

4min de lectura

Construir Imágenes de Docker para Múltiples Arquitecturas

Las aplicaciones pueden ejecutarse en diferentes tipos de procesadores, servidores Intel/AMD (x86_64), dispositivos ARM (Raspberry Pi, servidores ARM), y chips Apple Silicon (M1/M2/M3). Construir imágenes Docker que funcionen en todas estas arquitecturas te permitirá desplegar tu aplicación en cualquier infraestructura sin problemas de compatibilidad.

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.

screensho de ejecucion del comando docker buildx version

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.

screenshot de ejecucion del comando sudo docker buildx create --name multiarch-builder --use --bootstrap

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).

Grafico que explica como funciona el multi-arch image con buildx de Docker

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.

Recursos Adicionales


Avatar byandrev

Andres Parra

Soy Andrés Parra, Ingeniero de Sistemas. Me especializo en desarrollo web Full Stack y lidero el RPCIDE, un editor de código online para programación competitiva. Trabajo con tecnologías como React, Node.js, Python y bases de datos SQL/NoSQL. También soy entusiasta de competiciones de programación y proyectos de código abierto. Ver todos los posts

Comparte este artículo en