Imágenes Docker multiplataforma: tiempo y tamaño

Clase 6 de 34Curso de Docker Avanzado

Resumen

Docker promete reducir el clásico problema de «en mi máquina sí funcionaba», y sí, lo logra en gran parte. Aun así, las arquitecturas importan: trabajar con imágenes multiplataforma cambia tiempos y tamaños de compilación, y exige una configuración clave en Docker Desktop para que todo fluya.

¿Qué problema resuelven las imágenes multiplataforma en Docker?

Las computadoras no son iguales. Coexisten amd64 (común en laptops y servidores) y arm64 (frecuente en sistemas embebidos). Con imágenes multiplataforma puedes generar artefactos para ambas arquitecturas y evitar sorpresas al desplegar.

¿Qué arquitecturas se mencionan y por qué importan?

  • linux/amd64: la arquitectura típica de «cualquier laptop».
  • linux/arm64: usada en sistemas embebidos; ejemplo: una tableta de Raspberry Pi.
  • Amplio espectro: distintas CPUs exigen binarios compatibles.
  • Idea clave: una sola imagen puede empacarse para varias arquitecturas.

¿Qué habilidades y conceptos aplicas al trabajar con multiplataforma?

  • Interpretar errores y habilitar el almacenamiento con containerd.
  • Usar el parámetro --platform en el comando de construcción.
  • Evaluar tiempos de compilación y tamaño de imagen.
  • Decidir entre imagen genérica o multiplataforma según el entorno destino.

¿Cómo resolver el error inicial en Docker Desktop?

Aparece un error pidiendo habilitar containerd. La solución: abrir Docker Desktop, entrar al engrane de configuración, ir a general y activar la opción para utilizar containerd para jalar imágenes de diferentes tipos. Luego, aplicar y reiniciar el motor de Docker.

¿Cómo construir una imagen multiplataforma y qué implica?

El flujo es el mismo de siempre con docker build, añadiendo --platform para las arquitecturas objetivo. Durante la compilación, se observa alternancia entre ARM64 y AMD64: se generan ambas variantes al mismo tiempo y la espera es mayor.

¿Qué comando se usó con el parámetro --platform?

docker build --platform linux/amd64,linux/arm64 -t docker-scan
  • Mismo comando base, añadiendo --platform.
  • Se crea una etiqueta de referencia, por ejemplo: docker-scan.
  • Se compilan las dos variantes de arquitectura en una sola ejecución.

¿Qué diferencias de tiempo y tamaño observarás?

  • Tiempo de compilación multiplataforma: 198 segundos, cerca de tres minutos.
  • Más pasos ejecutados: crear dos variantes incrementa el trabajo.
  • Tamaño de imagen multiplataforma: aproximadamente 1.5 GB.
  • Referencia de imagen base: alrededor de 800 MB; casi el doble al ir multiplataforma.
  • Construcción genérica sin --platform: 0.9 segundos, una diferencia notable.
  • Ahorro al ir genérico: cerca de 400 MB menos y unos tres minutos de compilación menos.
  • Nota práctica: aunque el tamaño no siempre baja de forma drástica, el tiempo sí mejora mucho.

¿Cuándo conviene usar multiplataforma y cuándo una imagen genérica?

Los escenarios multiplataforma son relevantes en circuitos embebidos e Internet de las Cosas, donde arm64 es habitual. En la mayoría de los casos, si conoces el servidor objetivo, crear una imagen genérica para esa arquitectura simplifica el trabajo y evita costos en tiempo y tamaño.

¿Has medido tiempos y tamaños en tus builds con --platform o genéricos? Comparte tu experiencia y dudas en los comentarios.