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.