Saltar al contenido

¿Cómo limpiar los registros del contenedor Docker?

Recabamos en diferentes foros y así de este modo traerte la solución a tu duda, en caso de inquietudes déjanos la inquietud y contestamos con mucho gusto.

Solución:

Primero, si solo necesita ver menos resultados, puede hacer que Docker solo le muestre las líneas más recientes:

docker logs --since 30s -f 

O puede poner un número de líneas para limitar:

docker logs --tail 20 -f 

Para eliminar los registros en una instalación de Docker para Linux, puede ejecutar lo siguiente para un solo contenedor:

echo "" > $(docker inspect --format='.LogPath' )

Tenga en cuenta que esto requiere root, y no lo recomiendo. Podría dañar potencialmente el archivo de registro si null el archivo en el medio de la ventana acoplable escribiendo un registro en el mismo archivo. En su lugar, debe configurar la ventana acoplable para rotar los registros.


Por último, puede configurar la ventana acoplable para rotar automáticamente los registros con lo siguiente en un /etc/docker/daemon.json expediente:


  "log-driver": "json-file",
  "log-opts": "max-size": "10m", "max-file": "3"

Eso permite que Docker mantenga hasta 3 archivos de registro por contenedor, con cada archivo limitado a 10 megas (es decir, un límite entre 20 y 30 megas de registros por contenedor). Deberá ejecutar un systemctl reload docker para aplicar esos cambios. Y estos cambios son los valores predeterminados para cualquier contenedor recién creado, no se aplican a los contenedores ya creados. Deberá eliminar y volver a crear cualquier contenedor existente para que se aplique esta configuración.

Esta no es la solución ideal, pero hasta que Docker cree un comando para hacerlo, esta es una buena solución.

Crear un archivo de secuencia de comandos docker-clean-logs.sh con este contenido:

#!/bin/bash

rm $(docker inspect $1 | grep -G '"LogPath": "*"' | sed -e 's/.*"LogPath": "//g' | sed -e 's/",//g');

Otórguele el permiso de ejecución:

chmod +x ./docker-clean-logs.sh

Detenga el contenedor Docker que desea limpiar:

docker stop 

Luego ejecute el script anterior:

./docker-clean-logs.sh 

Y finalmente ejecute su contenedor nuevamente:

docker start ...

El crédito es para el usuario sgarbesi en esta página: https://github.com/docker/compose/issues/1083

Si desea eliminar todos los archivos de registro, no solo para el registro de un contenedor específico, puede usar:

docker system prune

Si te ha sido útil nuestro post, nos gustaría que lo compartas con el resto desarrolladores y nos ayudes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *