En este post veremos cómo elegir imágenes base pequeñas para Docker. La imagen base influye en el tamaño, las dependencias y las herramientas que estarán disponibles al ejecutar el contenedor. Elegir una variante pequeña puede reducir descargas y almacenamiento, pero la opción más pequeña no siempre es compatible con tu aplicación.
Para elegir imágenes base pequeñas para Docker, parte de lo que necesita el proceso en producción: bibliotecas del sistema, certificados, arquitectura y soporte del lenguaje. Después mide la imagen resultante y prueba la aplicación dentro de ella.
👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis.
🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis.
Qué comparar en una imagen base
Las etiquetas como slim o alpine describen variantes distintas, no una garantía de que todas las aplicaciones funcionen igual. Compara la base con el runtime y las bibliotecas que exige el programa.
| Tipo de base | Cuándo puede encajar | Qué debes comprobar |
|---|---|---|
| Variante estándar | Necesitas una distribución completa o dependencias del sistema que no están en una variante reducida. | Puede traer paquetes que la aplicación no necesita en ejecución. |
| Variante slim | Quieres conservar compatibilidad con Debian o Ubuntu y reducir paquetes opcionales. | Comprueba que están las bibliotecas del runtime y las herramientas que la app usa. |
| Alpine | Tu aplicación funciona correctamente sobre Alpine y buscas una base pequeña. | Alpine usa musl; módulos nativos compilados para glibc pueden necesitar ajustes o recompilación. |
| Distroless | El proceso requiere solo el runtime y sus dependencias, sin herramientas de administración dentro de la imagen. | No incluye shell ni gestor de paquetes; prepara por separado la depuración y la observabilidad. |
| Scratch | Publicas un binario estático que no necesita una distribución base. | La imagen está vacía: tendrás que aportar certificados, datos de zona horaria u otros archivos requeridos. |
Empieza por una variante oficial compatible
Busca imágenes base pequeñas para Docker y elige una etiqueta que identifique una versión y una distribución conocidas. Evita usar latest como base de despliegue: el contenido puede cambiar entre builds y hacer más difícil reproducir el resultado.
Una variante slim de Node puede servir para una aplicación que solo necesita el runtime y dependencias de producción. Este ejemplo presupone un proyecto con archivo de bloqueo y un servidor de Node que arranca desde server.js.
FROM node:22-bookworm-slim
WORKDIR /app
COPY package*.json ./
RUN npm ci --omit=dev
COPY . .
USER node
CMD ["node", "server.js"]Si tu proyecto compila archivos antes de ejecutarse, instala herramientas de compilación solo en una etapa de build y copia el resultado necesario a una etapa runtime. Así la imagen final no hereda automáticamente el compilador ni las dependencias de desarrollo.
Mide y prueba el resultado final
Construye la misma aplicación con cada candidata y compara el artefacto final, no solo el tamaño de la etiqueta base. Revisa qué capas añaden contenido y ejecuta las pruebas de inicio y funcionamiento dentro de cada imagen.
docker build -t mi-api:bookworm-slim .
docker image inspect mi-api:bookworm-slim --format='{{.Size}}'
docker image history mi-api:bookworm-slimdocker image inspect muestra el tamaño en bytes y docker image history ayuda a localizar capas grandes. Repite la construcción con la otra variante, conserva el mismo código y las mismas dependencias, y compara resultados con una medida equivalente.
Antes de ejecutar
- Comprueba las bibliotecas, certificados y archivos que necesita la aplicación en ejecución.
- Verifica la arquitectura y el runtime de cada imagen candidata.
- Prueba el mismo artefacto y las mismas tareas en cada variante antes de comparar tamaños.
- Asegúrate de que puedes depurar y actualizar la imagen elegida, sobre todo si no incluye una shell.
Errores comunes
- Elegir Alpine únicamente por su tamaño y descubrir después que una biblioteca nativa depende de glibc.
- Usar scratch sin copiar los certificados u otros archivos que necesita una aplicación real.
- Confundir una imagen pequeña con una imagen segura: mantén la base actualizada y analiza vulnerabilidades.
- Comparar imágenes que contienen dependencias distintas o builds diferentes; mide la misma aplicación y prueba el mismo comportamiento.
- Usar una etiqueta flotante sin revisar qué versión y distribución recibirá el siguiente build.
Lecciones relacionadas del curso Docker
- Cómo reducir el tamaño de una imagen: revisa otras técnicas para optimizar el contenido de la imagen final.
- Qué es un multi-stage build: separa las dependencias de compilación del runtime.
- Buenas prácticas y errores comunes al construir imágenes: comprueba los criterios de seguridad y mantenimiento.
Documentación oficial y recursos
- Docker Docs: buenas prácticas para construir imágenes.
- Docker Docs: contenido de confianza en Docker Hub.
Elige la imagen base más pequeña que siga siendo compatible, mantenible y comprobable para tu aplicación. Mide la imagen final, prueba el proceso con sus dependencias reales y documenta por qué escogiste esa variante antes de adoptarla en producción.

