¿Cansado de imágenes Docker que ocupan un espacio desorbitado en tu disco?

Las imágenes Docker pueden volverse pesadas rápidamente, especialmente en entornos de producción. Esto no solo afecta el tiempo de despliegue y el uso de recursos, sino que también puede ser un dolor de cabeza para la gestión. ¡Pero no te preocupes! En Nubettix, te traemos 3 trucos sencillos para que tus imágenes de producción sean tan ligeras como una pluma.

1. Usa imágenes base minimalistas (Alpine Linux)

La elección de tu imagen base es crucial. En lugar de usar distribuciones completas como Ubuntu, opta por variantes minimalistas como Alpine Linux. Son significativamente más pequeñas y contienen solo lo esencial para ejecutar tus aplicaciones.

# Ejemplo de Dockerfile usando Alpine
FROM alpine:latest

RUN apk add --no-cache nodejs

WORKDIR /app
COPY . .
CMD ["node", "index.js"]

2. Combina instrucciones RUN para reducir capas

Cada instrucción RUN en tu Dockerfile crea una nueva capa en la imagen. Combina comandos lógicos en una sola instrucción RUN usando && para minimizar el número de capas y, por ende, el tamaño de la imagen.

# Mal ejemplo: Múltiples capas
RUN apt-get update
RUN apt-get install -y --no-install-recommends package1
RUN apt-get install -y --no-install-recommends package2
RUN rm -rf /var/lib/apt/lists/*

# Buen ejemplo: Una sola capa
RUN apt-get update && \
    apt-get install -y --no-install-recommends package1 package2 && \
    rm -rf /var/lib/apt/lists/*

3. Limpia caché y archivos innecesarios después de la instalación

Los gestores de paquetes (como apt o apk) a menudo dejan archivos de caché o dependencias que ya no son necesarias. Asegúrate de limpiarlos explícitamente al final de tu instrucción RUN.

# Ejemplo para Debian/Ubuntu
RUN apt-get update && apt-get install -y --no-install-recommends mi-paquete && \
    rm -rf /var/lib/apt/lists/*

# Ejemplo para Alpine
RUN apk add --no-cache mi-paquete

¡A producir con ligereza!

Implementar estos trucos te ayudará a reducir drásticamente el tamaño de tus imágenes Docker. ¡Unas imágenes más ligeras significan despliegues más rápidos, menor consumo de recursos y un flujo de trabajo mucho más eficiente!