- En servidores Linux donde se operan servicios desplegando aplicaciones con Docker, a veces aparece un mensaje de falta de espacio en disco
- Aunque los datos y logs que la aplicación realmente genera y almacena no sean muchos, el almacenamiento total del sistema puede llenarse por completo
- Una de las causas de la falta de espacio de almacenamiento al usar Docker son los "logs de contenedores de Docker"
- Controladores de logging de Docker y ubicación de los logs
- Controlador de logging: Docker incluye un mecanismo de logging que ayuda a obtener información de los contenedores y servicios en ejecución; eso es el controlador de logging
- Comando
docker logs: muestra la información registrada por un contenedor en ejecución
- Comando
docker service logs: muestra la información registrada por todos los contenedores que participan en un servicio
- Docker usa el controlador de logging
json-file, que captura la salida estándar (stdout) o el error estándar (stderr) de todos los logs de contenedores y los registra en un archivo en formato JSON
- Si se ejecuta un contenedor de Docker con el comando
docker run o docker-compose up, se crea el archivo /var/lib/docker/containers/[Container-ID]/[Container-ID]-json.log y allí se registran los logs
- El controlador de logging
json-file no realiza rotación de logs
- Si un contenedor genera una gran cantidad de salida, el archivo de log guardado con este controlador puede usar una cantidad considerable de espacio en disco, lo que puede agotar el espacio disponible
- Reducir el tamaño de los logs de contenedores Docker
- Si se ejecuta el comando
docker rm o docker-compose down, se elimina el contenedor de Docker y también se elimina el directorio correspondiente a [Container-ID] dentro de /var/lib/docker/containers
- Con esto también se elimina el archivo
[Container-ID]-json.log, que ocupaba mucho espacio en disco, y se recupera espacio en el disco total del sistema
- Si se ejecuta el comando
truncate -s 0 <json-log-file>, se puede dejar el tamaño del archivo de log en 0
- Configuración de rotación de logs
- Se puede activar la rotación de logs indicando el tamaño máximo del archivo (
max-size) y la cantidad máxima de archivos (max-file)
- Cuando el tamaño del archivo alcanza el valor máximo configurado, se reemplaza por un archivo nuevo, y los archivos existentes se crean como
...-json.log.1, ...-json.log.2 hasta el número máximo permitido
- Si se supera ese límite, se elimina el archivo más antiguo, evitando que el tamaño de los archivos de log de los contenedores Docker crezca indefinidamente
Aún no hay comentarios.