¡/dev/root al 100% y nos quedamos sin espacio !

El otro día me paso algo curioso , en la maquina virtual donde tengo alojados todos los servicios y dockers se quedo sin espacio , estaba al 100% de ocupación , después de borrar todos los ficheros de la papelera y demás aun ocupaba mucho /dev/root , total que me puse a ver que leches estaba ocupando tanto espacio , a priori ya vi que los los logs de los dockers ocupaban la leche.

Con este comando nos mostrara el tamaño de los logs de cada uno de los dockers

cd /var/lib/docker/containers
docker ps -aq | xargs -I '{}' docker inspect --format='{{.LogPath}}' '{}' | xargs ls -lh

Alguno de los logs superaba con creces los tres gigas !!! , WTF

Para evitar esto en nuestro dockercompose añadiremos esto a cada uno de los containers

logging:
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "3"

o esto para hacerlo con todos los dockers a la vez

sudo apt install jq

echo '{"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"}}' | jq . > /etc/docker/daemon.json \
  && systemctl restart docker

Después de este comando veremos como quedan los ficheros después de adelgazar bastante

Con este comando buscamos los fciheros mas grandes

find / -mount -type f -printf '%s %p\n'| sort -nr | head --lines=30

Si queda algun json.log lo eliminaremos a mano

Ya hemos liberado 5Gb mas

Ahora toca hacer limpieza de los dockers

docker builder prune

O mas a lo bestia

docker system prune --all --volumes --force

Luego tendremos que crear la red traefik de nuevo con

docker network create traefik

Y recrear todos los containers con

docker-compose up -d

Lo siguiente es un buen apt clean

sudo apt update
sudo apt clean

Comprobaremos que ocupa cada uno de los directorios

sudo ncdu -x -r /

Y para acabar comprobaremos que en los dispositivos montados no tengamos nada extraño

  • Accederemos como su
  • Desmontarnos todo lo que tengamos montado : sudo umount -a
  • iremos a la ruta de dispositivos montados y ver qué ficheros están ahí y no deberían de estar, teniendo en cuenta que no hay nada montado , si hubiera algo lo eliminaríamos

Y con esto y un bizcocho ……..

Bonus : A veces se llenan los directorios tmp , a mi de pronto me apareció uno uno 86GB de porqueria y al borrarlo error de argumentos

bash: /bin/ls: La lista de argumentos es demasiado larga

Para ello usaremos el siguiente comando

#Comprobamos el contenido de la carpeta
ls /var/lib/docker/overlay2/5e42d98a49443a271cc848db26edda9f3078df76dd9fe6f8a206bd8320ec1098/diff/tmp

#Borramos todo su contenido de forma recursiva OJO
find /var/lib/docker/overlay2/5e42d98a49443a271cc848db26edda9f3078df76dd9fe6f8a206bd8320ec1098/diff/tmp/ -name '*' | xargs rm

Deja un comentario