La monitorización eficaz de los contenedores Docker es fundamental para garantizar la estabilidad y el correcto funcionamiento de sus aplicaciones. Los registros de Docker desempeñan un papel crucial, ya que proporcionan información sobre el funcionamiento interno de sus contenedores, lo que le permite supervisar el rendimiento, detectar errores y solucionar problemas con mayor eficiencia. Esta guía completa le explicará el proceso de obtención e interpretación de los registros de Docker y le proporcionará los conocimientos necesarios para resolver los problemas más comunes relacionados con los contenedores.
Comprender los registros de Docker
Los registros de Docker contienen un registro detallado de todas las actividades que ocurren dentro de un contenedor Docker en ejecución. Esto incluye tanto la salida estándar (stdout) como los mensajes de error estándar (stderr), lo que permite supervisar el rendimiento del contenedor y diagnosticar posibles problemas.
Por defecto, los registros de Docker se almacenan como archivos JSON en el directorio «/var/lib/docker/containers» del sistema anfitrión. Cada contenedor genera su propio archivo de registro con el formato «[id_del_contenedor]-json.log».Puede acceder a estos registros directamente o utilizar el docker logscomando en su terminal para visualizarlos fácilmente.
Estos registros contienen mensajes esenciales de la aplicación, advertencias y detalles de errores que ayudan a solucionar problemas. También pueden proporcionar información relacionada con el sistema, como eventos de inicio y métricas de uso de recursos.
Para facilitar una mejor gestión de los registros, Docker utiliza controladores de registro. Un controlador de registro determina cómo y dónde se almacenan o transmiten los registros. El controlador de registro predeterminado, json-file, captura los registros en la máquina local en formato JSON, pero se pueden seleccionar controladores alternativos para reenviar los registros a sistemas externos y así mejorar su gestión y análisis.
Acceso a los registros de Docker
Para ver los registros de un contenedor en ejecución que utiliza el controlador de registro “json-file” o journald, puede ejecutar el siguiente comando:
docker logs [OPTIONS] CONTAINER_NAME_OR_ID
Reemplace CONTAINER_NAME_OR_IDcon el nombre o ID correspondiente de su contenedor de destino. Para obtener una lista de todos los contenedores en ejecución, utilice el comando:
docker ps
Este comando muestra los contenedores activos junto con sus respectivos identificadores, nombres, estados e información adicional relevante.

Por ejemplo, si Docker está ejecutando dos contenedores, llamados openwebui y ollama, para acceder a los registros del contenedor openwebui, ejecutaría lo siguiente:
docker logs openwebui

También puede utilizar el ID del contenedor en lugar del nombre para ver los registros, como se muestra a continuación:
docker logs 1f351684ae30

Opciones y flags de los registros de Docker
El docker logscomando admite varias opciones para personalizar la visualización del registro. A continuación, se muestran algunos parámetros útiles:
| Opción | Descripción | Comando de ejemplo |
|---|---|---|
| -detalles | Muestra detalles adicionales en los registros. | docker logs –details container_name |
| –seguir, -f | Muestra continuamente las nuevas entradas del registro en tiempo real. | docker logs -f container_name |
| -desde | Muestra los registros generados después de un tiempo o duración establecidos (por ejemplo, 2024-07-08T13:42:13Z o 10m). | docker logs –since 10m container_name |
| –cola, -n | Muestra un número determinado de líneas desde el final de los registros. | docker logs –tail 50 container_name |
| –marcas de tiempo, -t | Agrega marcas de tiempo a cada entrada del registro. | docker logs -t container_name |
| -hasta | Muestra los registros generados antes de un momento específico. | docker logs –until 2024-07-08T14:00:00Z container_name |
Por ejemplo, para ver las últimas 50 entradas de registro de un contenedor específico, ejecutaría:
docker logs --tail 50 openwebui

De igual forma, puede emplear otras opciones, como --followactualizaciones en vivo de los registros o --sinceentradas de registro filtradas por tiempo.
Guardar los registros de Docker en un archivo
Para guardar los registros de Docker en un archivo de texto, utilice el operador de redirección o las opciones de comando disponibles. Por ejemplo, el siguiente comando guardará los registros de un contenedor específico en “container_logs.txt”:
docker logs container_name > container_logs.txt

Posteriormente, puedes acceder a este archivo con cualquier editor de texto (por ejemplo, Bloc de notas, Visual Studio Code o nano) para revisar los registros guardados.

Visualización de registros en Docker Compose
Para acceder a los registros de los contenedores gestionados por Docker Compose, utilice el docker compose logscomando. Para ver los registros de todos los contenedores de su proyecto Compose, ejecute:
docker compose logs
Si te interesan los registros de un servicio específico, añade el nombre del servicio al comando:
docker compose logs service_name
Consejos para gestionar los registros de Docker
Docker utiliza controladores de registro para capturar y almacenar la salida de los contenedores. El controlador predeterminado, json-file, guarda los registros en formato JSON en el host. Puede cambiar a controladores alternativos para enviar los registros a servicios externos, lo que le brinda mayor control sobre la administración de registros.
Docker ofrece dos modos para la entrega de registros. El modo de bloqueo transmite los registros inmediatamente, pero puede afectar ligeramente al rendimiento. En cambio, el modo sin bloqueo retiene temporalmente los registros en memoria antes de reenviarlos, lo que minimiza las demoras, pero conlleva el riesgo de pérdida de registros si la memoria se llena.
Para mayor flexibilidad, considere gestionar el registro de eventos dentro de su aplicación. Sin embargo, dado que los datos de los contenedores son efímeros, es recomendable almacenar los registros en un almacenamiento persistente o reenviarlos a un servicio externo de gestión de registros.
El uso de volúmenes de Docker es un método fiable para proteger los registros. Los volúmenes guardan los datos directamente en el host y garantizan su disponibilidad incluso durante las detenciones o reinicios de los contenedores, lo que los hace preferibles para el almacenamiento a largo plazo en comparación con los montajes de enlace.
Otra estrategia eficaz consiste en utilizar un contenedor de registro dedicado. Este contenedor especializado recopila y gestiona los registros de varios contenedores, enviándolos a un sistema centralizado, lo que permite que los contenedores de la aplicación principal sean ligeros y fáciles de gestionar.
Conclusión
En conclusión, los registros de Docker son cruciales para monitorizar el rendimiento de los contenedores y facilitar la resolución rápida de problemas. Al utilizar comandos como `docker docker logslogs` y seguir las mejores prácticas —incluido el almacenamiento persistente y controladores de registro eficaces— se puede mantener una gestión de registros fiable. Un marco de registro bien organizado contribuirá a la estabilidad de los contenedores y al funcionamiento eficiente de las aplicaciones. Para una monitorización y un análisis de registros mejorados, considere la integración de herramientas como ELK Stack, Fluentd, Prometheus y Grafana.
Deja una respuesta