Los logs de Docker son la salida que generan los procesos del contenedor y que Docker captura para que podamos consultarla después.
Hemos aprendido a lanzar contenedores en modo Detached (-d). Esto es genial porque nos libera la terminal, pero tiene un efecto secundario peligroso: dejamos de ver qué está pasando.
- Si lanzas una base de datos y falla al arrancar, no verás el error.
- Si tu servidor web se cae al recibir una petición, no te enterarás.
En este artículo vamos a aprender a escuchar lo que dicen nuestros contenedores y a vigilar su salud.
Docker Logs
En los sistemas tradicionales, cuando una aplicación fallaba, tenías que ir a buscar un archivo perdido en /var/log/nginx/error.log o similar.
En Docker, la filosofía es distinta. Docker captura automáticamente todo lo que el proceso principal escribe en la Salida Estándar (STDOUT) y en la Salida de Error (STDERR).
Para ver qué ha dicho un contenedor, usamos docker logs:
docker logs <nombre_contenedor>
Esto volcará en tu pantalla todo el historial de lo que ha ocurrido desde que el contenedor arrancó.
Si estás programando una app para Docker (en Node, Python, C#…), no escribas logs en archivos de texto dentro del contenedor.
Escribe simplemente en la consola (console.log, print). Docker se encargará de capturarlo, rotarlo y gestionarlo.
Monitorización de Recursos (docker stats)
A veces el problema no es que falle, sino que va lento. O peor, que tu ordenador entero va lento desde que lanzaste esos contenedores. ¿Cómo sabemos quién se está comiendo la CPU o la RAM?
Docker incluye un “Administrador de Tareas” nativo muy potente:
docker stats
Verás una tabla en tiempo real que se actualiza cada segundo:
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O
a1b2c3d4 mi-db 0.15% 450MiB / 8GiB 5.20% 1.2kB / 0B
e5f6g7h8 mi-web 0.02% 22MiB / 8GiB 0.12% 500B / 0B
Aquí puedes detectar rápidamente al culpable:
- CPU %: Si un contenedor está al 100%, algo se ha quedado colgado en un bucle infinito.
- MEM USAGE: Aquí verás si esa base de datos o ese servidor Java se está comiendo toda tu RAM disponible.
Inspeccionando procesos (docker top)
Si quieres hilar más fino y ver qué procesos específicos corren dentro de un contenedor (sin entrar en él), puedes usar:
docker top mi-contenedor
Es útil para verificar, por ejemplo, si tu servidor web ha lanzado los hilos (threads) de trabajo correctamente o si hay procesos zombis.
