Cómo limpiar cachés de paquetes

como-limpiar-caches-de-paquetes
como-limpiar-caches-de-paquetes

En este post veremos cómo limpiar cachés de paquetes en Docker. Al instalar paquetes durante la construcción de una imagen, los gestores pueden descargar índices y archivos que solo hacen falta en esa etapa. Si esos datos quedan dentro de la imagen final, ocupan espacio sin aportar nada al proceso que ejecutará la aplicación.

Para reducir ese contenido, actualiza los índices, instala los paquetes necesarios y limpia la caché en la misma instrucción RUN. Borrar archivos en una capa posterior no recupera el espacio de la capa donde se descargaron.

👉 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é cachés deja un gestor de paquetes

Cada distribución guarda metadatos y paquetes descargados en ubicaciones distintas. Conviene aplicar el método propio de la base que uses y no añadir comandos de limpieza de otra distribución.

GestorQué suele dejarPráctica recomendada
APT, Debian o UbuntuÍndices en /var/lib/apt/lists y paquetes descargados.Combina apt-get update con la instalación y elimina los índices al final de ese mismo RUN.
APK, AlpineÍndices y paquetes temporales.Instala con apk add –no-cache para evitar conservar esos datos en la capa.
DNF, Fedora y derivadosMetadatos y paquetes descargados.Ejecuta dnf clean all después de instalar lo necesario.
Caché del constructor DockerCapas y resultados reutilizables durante otros builds.Es independiente de la caché incluida en la imagen; limpiar una no elimina la otra.

Limpia la caché en la misma capa

Docker guarda el resultado de cada instrucción en una capa. Si una instrucción descarga los índices y otra posterior los borra, la capa anterior sigue formando parte de la imagen. Por eso, agrupa actualización, instalación y limpieza en el mismo RUN.

FROM debian:bookworm-slim
RUN apt-get update && apt-get install -y --no-install-recommends ca-certificates curl && rm -rf /var/lib/apt/lists/*

En imágenes Debian y Ubuntu oficiales, apt-get clean ya se ejecuta automáticamente. Eliminar /var/lib/apt/lists después de instalar sí ayuda a reducir el contenido que permanece en la imagen. La instalación y la limpieza deben seguir juntas para que no quede una capa intermedia con los índices.

Ejemplo con Alpine

En Alpine, –no-cache evita guardar los índices locales al añadir paquetes. No hace falta ejecutar después un comando de limpieza separado.

FROM alpine:3.22
RUN apk add --no-cache ca-certificates curl

Caché de paquetes y caché de Docker

La caché del gestor contiene datos como índices y archivos de paquetes. La caché de Docker conserva resultados de instrucciones para acelerar construcciones futuras. Eliminar archivos del sistema de paquetes reduce el contenido de la imagen; no borra la caché del constructor. Si necesitas administrar esta última, consulta la documentación de Build cache y planifica su limpieza por separado.

Antes de ejecutar

  • Comprueba qué distribución usa la imagen base para elegir APT, APK o DNF.
  • Agrupa actualización, instalación y limpieza en una misma instrucción RUN.
  • Verifica que la aplicación conserva certificados y bibliotecas que necesita para ejecutarse.
  • Distingue los archivos de caché incluidos en la imagen de la caché que mantiene el constructor Docker.

Errores comunes

  • Instalar en un RUN y borrar la caché en otro: los archivos descargados permanecen en una capa anterior.
  • Usar comandos de otra distribución: APT, APK y DNF no comparten rutas ni opciones.
  • Borrar directorios a ciegas: conserva archivos que la aplicación necesite durante la ejecución.
  • Confundir la caché del constructor con la capa de la imagen: son datos distintos y se gestionan por separado.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

Al limpiar cachés de paquetes en Docker en la misma instrucción que las crea, evitas conservar datos temporales en una capa de la imagen. Aplica el comando correspondiente a la distribución, mantén separados los datos del constructor y prueba después que la aplicación sigue disponiendo de todo lo necesario.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *