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