Cómo configurar la rotación de registros para Docker

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

Docker se ha convertido en una plataforma de contenerización ampliamente adoptada, que permite a los desarrolladores construir, desplegar y ejecutar aplicaciones en un entorno consistente y escalable. A medida que crece tu infraestructura basada en Docker, gestionar la creciente cantidad de datos de registro se convierte en una tarea crucial. Este tutorial te guiará a través del proceso de configuración de la rotación de registros para tus contenedores Docker, asegurando una gestión eficiente de los registros y una optimización del almacenamiento.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker/ContainerOperationsGroup -.-> docker/logs("View Container Logs") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/SystemManagementGroup -.-> docker/prune("Remove Unused Docker Objects") subgraph Lab Skills docker/logs -.-> lab-416160{{"Cómo configurar la rotación de registros para Docker"}} docker/volume -.-> lab-416160{{"Cómo configurar la rotación de registros para Docker"}} docker/info -.-> lab-416160{{"Cómo configurar la rotación de registros para Docker"}} docker/version -.-> lab-416160{{"Cómo configurar la rotación de registros para Docker"}} docker/prune -.-> lab-416160{{"Cómo configurar la rotación de registros para Docker"}} end

Comprender el registro de Docker

Docker es una poderosa plataforma de contenerización que ha revolucionado la forma en que se desarrollan, despliegan y gestionan las aplicaciones. Uno de los aspectos críticos al trabajar con Docker es comprender y gestionar los registros generados por los contenedores de Docker. Los registros proporcionan información valiosa sobre el comportamiento, el rendimiento y la salud de tus aplicaciones contenerizadas, lo cual es esencial para la resolución de problemas, el monitoreo y la auditoría.

¿Qué es el registro de Docker?

Docker proporciona un mecanismo de registro incorporado que captura las salidas estándar (stdout) y los errores estándar (stderr) de cada contenedor. Este mecanismo de registro se conoce como el controlador de registro de Docker (Docker logging driver), y te permite ver y gestionar los registros generados por tus contenedores.

Acceder a los registros de Docker

Puedes acceder a los registros de un contenedor de Docker utilizando el comando docker logs. Este comando te permite ver los registros de un contenedor específico, seguir el flujo de registros en tiempo real e incluso filtrar los registros según varios criterios.

## View the logs of a container

## Follow the log stream in real-time

## Filter logs based on a specific time range

Comprender los niveles de registro

Los registros de Docker pueden tener diferentes niveles de registro, que indican la gravedad del mensaje. Los niveles de registro disponibles son:

  • debug: Información detallada sobre la operación del contenedor.
  • info: Información general sobre la operación del contenedor.
  • warn: Advertencias sobre posibles problemas o comportamientos inesperados.
  • error: Errores que pueden haber ocurrido durante la operación del contenedor.
  • fatal: Errores graves que han causado el fallo del contenedor.

Puedes controlar el nivel de registro de tus contenedores estableciendo la opción --log-level al iniciar un contenedor.

## Start a container with a specific log level

Controladores de registro de Docker

Docker admite varios controladores de registro (logging drivers), que determinan cómo se almacenan y gestionan los registros. El controlador de registro predeterminado es el controlador json-file, que almacena los registros en formato JSON en el sistema de archivos del host. Sin embargo, puedes configurar Docker para que utilice otros controladores de registro, como syslog, journald o fluentd, según tus requisitos e infraestructura.

graph LR A[Docker Container] --> B[Logging Driver] B --> C[json-file] B --> D[syslog] B --> E[journald] B --> F[fluentd]

Al comprender los conceptos básicos del registro de Docker, puedes gestionar eficazmente los registros generados por tus aplicaciones contenerizadas y utilizarlos para resolver problemas, monitorear el rendimiento y garantizar la confiabilidad de tu infraestructura.

Configuración de la rotación de registros para contenedores de Docker

A medida que tus contenedores de Docker generan más registros con el tiempo, los archivos de registro pueden consumir rápidamente una cantidad significativa de espacio en disco en el sistema host. Para evitar esto, puedes configurar la rotación de registros, que es el proceso de archivar y eliminar periódicamente los archivos de registro más antiguos para liberar espacio en disco.

Comprender la rotación de registros

La rotación de registros es una práctica común en la administración de sistemas, donde los archivos de registro se rotan, comprimen y archivan periódicamente para mantener un tamaño de archivo de registro manejable. Este proceso asegura que los archivos de registro no crezcan indefinidamente y consuman todo el espacio en disco disponible.

Configuración de la rotación de registros para contenedores de Docker

Para configurar la rotación de registros para contenedores de Docker, puedes utilizar la opción incorporada --log-opt al iniciar un contenedor. Esta opción te permite especificar los parámetros de rotación de registros, como el tamaño máximo del archivo de registro, el número de archivos de registro archivados a mantener y el formato de compresión.

## Start a container with log rotation configured

En el ejemplo anterior, el contenedor se configura para rotar los archivos de registro cuando alcanzan un tamaño máximo de 10 MB y para mantener un máximo de 5 archivos de registro archivados.

Implementación de estrategias de rotación de registros

Si bien la opción incorporada --log-opt es una forma conveniente de configurar la rotación de registros para contenedores individuales, puede que no sea adecuada para gestionar la rotación de registros en toda tu infraestructura de Docker. En tales casos, puedes implementar estrategias automatizadas de rotación de registros utilizando herramientas o scripts externos.

Un enfoque popular es utilizar la utilidad logrotate, que es una herramienta estándar para gestionar la rotación de registros en sistemas Linux. Puedes crear un archivo de configuración de logrotate que especifique las reglas de rotación de registros para tus contenedores de Docker y luego programar la ejecución periódica del comando logrotate utilizando un trabajo cron o un servicio del sistema.

A continuación, se muestra un ejemplo de archivo de configuración de logrotate para contenedores de Docker:

/var/lib/docker/containers/*/*.log {
    rotate 5
    copytruncate
    compress
    delaycompress
    missingok
    notifempty
}

Este archivo de configuración rotará los archivos de registro de todos los contenedores de Docker, manteniendo un máximo de 5 archivos de registro archivados, comprimiendo los archivos archivados y eliminando los archivos de registro si están vacíos.

Al configurar la rotación de registros para tus contenedores de Docker, puedes asegurarte de que el espacio en disco del sistema host se utilice de manera eficiente y de que tus aplicaciones contenerizadas sigan funcionando sin problemas sin verse afectadas por el crecimiento de los archivos de registro.

Implementación de estrategias automatizadas de rotación de registros

Si bien la opción incorporada --log-opt en Docker es una forma conveniente de configurar la rotación de registros para contenedores individuales, puede que no sea la solución más escalable o eficiente para gestionar la rotación de registros en toda tu infraestructura de Docker. En tales casos, puedes implementar estrategias automatizadas de rotación de registros utilizando herramientas o scripts externos.

Uso de logrotate

Un enfoque popular es utilizar la utilidad logrotate, que es una herramienta estándar para gestionar la rotación de registros en sistemas Linux. logrotate se puede configurar para monitorear y rotar archivos de registro según varios criterios, como el tamaño del archivo, la antigüedad o una programación.

A continuación, se muestra un ejemplo de cómo puedes configurar logrotate para gestionar los registros de todos los contenedores de Docker en un sistema Ubuntu 22.04:

  1. Crea un archivo de configuración de logrotate para los contenedores de Docker:

    sudo touch /etc/logrotate.d/docker-containers
    sudo nano /etc/logrotate.d/docker-containers
  2. Agrega la siguiente configuración al archivo:

    /var/lib/docker/containers/*/*.log {
        rotate 5
        copytruncate
        compress
        delaycompress
        missingok
        notifempty
    }

    Esta configuración rotará los archivos de registro de todos los contenedores de Docker, manteniendo un máximo de 5 archivos de registro archivados, comprimiendo los archivos archivados y eliminando los archivos de registro si están vacíos.

  3. Guarda el archivo y cierra el editor de texto.

  4. Prueba la configuración de logrotate:

    sudo logrotate -d /etc/logrotate.d/docker-containers

    La opción -d ejecutará logrotate en modo de depuración, lo que mostrará las acciones que realizaría sin ejecutarlas realmente.

  5. Programa la ejecución periódica del comando logrotate utilizando un trabajo cron o un servicio del sistema.

    sudo crontab -e

    Agrega la siguiente línea al archivo crontab para ejecutar logrotate diariamente a las 3 de la mañana:

    0 3 * * * /usr/sbin/logrotate /etc/logrotate.d/docker-containers

Uso de herramientas de terceros

Además de logrotate, hay varias herramientas y servicios de terceros que pueden ayudarte a implementar estrategias automatizadas de rotación de registros para tu infraestructura de Docker. Algunas opciones populares son:

  • Fluentd: Un popular recopilador de datos de código abierto que se puede utilizar para gestionar y rotar registros de contenedores de Docker.
  • Elastic Stack (ELK): Un conjunto de herramientas que incluye Elasticsearch, Logstash y Kibana, que se pueden utilizar para la gestión y rotación centralizada de registros.
  • Splunk: Una plataforma comercial de gestión y análisis de registros que se puede integrar con Docker para gestionar y rotar registros.
  • LabEx Log Rotation: Un servicio con la marca LabEx que proporciona rotación y gestión automatizadas de registros para contenedores de Docker.

Al implementar estrategias automatizadas de rotación de registros, puedes asegurarte de que el espacio en disco de tu infraestructura de Docker se utilice de manera eficiente y de que tus aplicaciones contenerizadas sigan funcionando sin problemas sin verse afectadas por el crecimiento de los archivos de registro.

Resumen

Al final de este tutorial, tendrás una comprensión integral del registro de Docker y serás capaz de implementar estrategias efectivas de rotación de registros para mantener la salud y el rendimiento de tus aplicaciones basadas en Docker. Dominar la rotación de registros para Docker te ayudará a optimizar el almacenamiento, mejorar la estabilidad del sistema y mantener un sistema de gestión de registros bien organizado.