Introducción
No hace mucho, me topé con un problema algunos logs excedian alrededor de más de 100GB y otros en camino como de 1GB, no quise eliminar todos los logs, pero si los que ocupan un espacio considerable. A continuación detallo los comando utilizados para la limpieza y reducción de logs.
Comandos
Listar e identificar contenedores por tamaño
El siguiente comando muestra el tamaño de mayor a menor y la ruta del log
sudo docker ps -aq | xargs -I {} sh -c 'echo "$(sudo du -h $(docker inspect -f "{{.LogPath}}" {}))\t$(docker inspect -f "{{.Name}}" {} | tr -d "/")"' | sort -hr
Como podrás ver, lo el comando anterior lista lo siguiente:
Tamaño (sea KB,MB o GB)
Ruta del contenedor (en mi caso está en
home
, lo normal es que esté en/var/lib/docker/containers/
nombre del contenedor
Inspeccionar y eliminar
Puedes utilizar los siguientes comandos para realizar una inspección y también eliminar el log, en este caso tengo el log (señalado en rojo) es el hash (SHA-256) generado: b89c3e52092a4b6f0e2c8356c5f213ce6c61663fb03740efdd3bae8a937a1473
Para la inspección utiliza: docker inspect <<hash>>
Para realizar la eliminación, NO debemos eliminar el log, si no truncarlo para ello el comando es:
sudo truncate -s 0 /home/example/docker-containers/containers/b89c3e52092a4b6f0e2c8356c5f213ce6c61663fb03740efdd3bae8a937a1473/b89c3e52092a4b6f0e2c8356c5f213ce6c61663fb03740efdd3bae8a937a1473-json.log
donde:
truncate
: modifica el tamaño de archivo-s 0
: establecer el tamaño en 0
Consideraciones
La ruta puede cambiar acorde a tu configuración que hayas realizado para almacenar los contenedores
Puedes modificar el tamaño de los logs con
max-size
, puedes revisar en el siguiente enlace: linkNo es necesario utilizar sudo, también depende de como hayas realizado la instalación, de igual forma puedes revisar el siguiente link para ejecuciones de docker sin sudo (link)
Para servidores de entornos de productivos, debe considerarse al menos utilizar
logrotate
y coordinaciones conmax-size