Skip to main content

Command Palette

Search for a command to run...

Limpiar logs de contenedores docker

Updated
2 min read
Limpiar logs de contenedores docker
C

I am Christian Loza Peralta, working as a technical leader specialized in software engineering and software architecture. My expertise lies in the development of scalable and secure applications, utilizing agile methodologies, as well as in the implementation of cloud-based solutions and the adoption of microservices architectures. Furthermore, my interest in philosophy and anthropology shapes my holistic approach to designing solutions that are not only technically robust but also contribute to technological culture. With a constant commitment to learning and improvement, I aim to tackle projects from a comprehensive perspective that combines technical and cultural effectiveness

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

df

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: link

  • No 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 con max-size

More from this blog

C

Christian Loza Peralta

13 posts

I’m Christian Loza, passionate about software engineering and emerging technologies, focusing on software and solution architecture, and cloud, to build scalable and efficient systems.