# Limpieza de espacio en disco de Docker

## Limpieza de espacio en disco de Docker (Hosts)

Los datos de Docker crecen con el tiempo en las máquinas host.\
Los alquileres antiguos dejan contenedores detenidos, imágenes sin usar, volúmenes y caché de compilación.\
Si no lo limpias, el disco raíz se llena y los despliegues empiezan a fallar.

{% hint style="info" %}
Ejecuta la limpieza solo cuando el servidor esté **no alquilado** y no necesites ningún dato antiguo de contenedores.\
Si no estás seguro, detente aquí y primero haz una comprobación de uso de disco.
{% endhint %}

***

## 1) Comprobar uso de disco

### Espacio en disco a nivel de SO (`df -h`)

Esto muestra el espacio libre en cada sistema de archivos montado.

```bash
df -h
```

Te interesa principalmente `/` (raíz) y la partición que contiene `/var/lib/docker`.

### Uso de disco a nivel de Docker (`docker system df`)

Esto muestra qué está almacenando Docker y cuánto se puede recuperar.

```bash
docker system df
```

Si quieres más detalle por imagen/contenedor:

```bash
docker system df -v
```

***

## 2) Limpieza completa (recomendado)

Este es el comando para “restablecer los restos de Docker de alquileres anteriores”.\
Elimina contenedores, imágenes, redes y **volúmenes no usados**.

```bash
docker system prune -a --volumes
```

{% hint style="warning" %}
`-a` elimina **todas las imágenes no usadas**, no solo las “colgantes”.\
Eso incluye imágenes en caché que podrías querer para despliegues más rápidos en el futuro.
{% endhint %}

***

## 3) Comandos de limpieza individuales (más control)

Usa estos cuando quieras limpiar una categoría específica.\
Son más seguros para mantenimiento incremental.

### Contenedores (solo detenidos)

```bash
docker container prune
```

### Imágenes (no usadas)

Eliminar solo capas colgantes:

```bash
docker image prune
```

Eliminar todas las imágenes no usadas (mismo riesgo que `system prune -a`):

```bash
docker image prune -a
```

### Volúmenes (no usados)

```bash
docker volume prune
```

### Redes (no usadas)

```bash
docker network prune
```

***

## 4) Mejores prácticas para el mantenimiento del host

1. Limpia **entre alquileres** o durante tiempos de inactividad planificados.
2. Mantén un margen de seguridad.\
   Apunta a **10–20 GB** libres en el disco raíz en todo momento.
3. Comprueba el uso de Docker regularmente:
   * `df -h`
   * `docker system df`
4. Prefiere la limpieza incremental primero:
   * `docker container prune`
   * `docker image prune`
   * `docker volume prune`
5. Usa la limpieza completa solo cuando sea necesario:
   * `docker system prune -a --volumes`
6. Si el uso de disco sigue creciendo rápidamente, investiga:
   * Volúmenes grandes creados por los arrendatarios.
   * Registros bajo `/var/lib/docker/containers/*/*.log`.
   * Caché de compilación por reconstrucciones frecuentes de imágenes.
