DEV Community

Cover image for Docker en producción: menos peso, más performance
Alejo Suarez for Adini

Posted on

Docker en producción: menos peso, más performance

¿Cómo hacer que los contenedores Docker sean livianos?

Este es un problema real y cotidiano en cualquier entorno productivo. Imágenes Docker pesadas generan despliegues lentos, mayor consumo de recursos y costos innecesarios en la nube.

En este artículo compartimos las mejores prácticas para aplicar en proyectos reales para mantener imágenes Docker pequeñas, seguras y listas para producción.


¿Por qué es importante usar contenedores livianos?

Reducir el tamaño de las imágenes Docker tiene beneficios directos:

  • Inicio más rápido de los contenedores
  • Descargas y despliegues más ágiles
  • Menor consumo de almacenamiento y memoria
  • Mejor rendimiento en la nube
  • Reducción de costos en infraestructura

En entornos con CI/CD, microservicios o escalado automático, estas mejoras se notan muchísimo.


Buenas prácticas para crear imágenes Docker livianas

1. Usar imágenes base pequeñas

Siempre que sea posible, evitá imágenes basadas en sistemas operativos completos.

Recomendación:

  • Preferir alpine o versiones slim
  • Evitar imágenes genéricas innecesariamente grandes

Ejemplo:

FROM node:20-alpine
Enter fullscreen mode Exit fullscreen mode

Esto reduce drásticamente el tamaño inicial de la imagen.


2. Usar builds multi-stage

Separar el proceso de build del entorno de ejecución es una de las prácticas más importantes.

  • En la etapa de build se instalan dependencias y se compila
  • En la etapa final solo se copian los artefactos necesarios

Beneficio:
La imagen final no incluye herramientas de compilación ni dependencias innecesarias.


3. Instalar solo lo estrictamente necesario

Cada paquete extra suma peso y posibles vulnerabilidades.

  • No instalar editores, debuggers o herramientas que no se usen en producción
  • Mantener el contenedor enfocado en una sola responsabilidad

4. Limpiar caché y archivos temporales

Los gestores de paquetes dejan archivos que no se necesitan en runtime.

Ejemplo:

RUN apt-get update && apt-get install -y curl \
 && rm -rf /var/lib/apt/lists/*
Enter fullscreen mode Exit fullscreen mode

Esto puede ahorrar decenas de megabytes por imagen.


5. Minimizar la cantidad de capas

Cada instrucción en el Dockerfile crea una nueva capa.

Buena práctica:

  • Combinar comandos relacionados en una sola instrucción RUN
  • Evitar pasos innecesarios

Resultado: imágenes más limpias y eficientes.


6. Usar .dockerignore

Muchas veces el problema no está en el Dockerfile, sino en lo que se copia al contenedor.

Con .dockerignore evitás:

  • node_modules
  • logs
  • archivos temporales
  • repositorios .git

Esto reduce el tamaño de la imagen y acelera el build.


7. No ejecutar contenedores como root

Aunque no afecta directamente el tamaño, sí impacta en la calidad de producción.

  • Mejora la seguridad
  • Reduce riesgos en caso de vulnerabilidades

Crear y usar un usuario específico dentro del contenedor es una buena práctica estándar.


Conclusión

Optimizar contenedores no es solo reducir su tamaño, sino mejorar rendimiento, seguridad y costos. Aplicar estas prácticas permite despliegues más rápidos, sistemas más confiables y un mantenimiento más simple en entornos modernos.

Top comments (0)