Introducción
Las aplicaciones que se ejecutan dentro de contenedores suelen escribir sus mensajes de estado y error en la salida estándar y el error estándar. Este es un patrón de diseño importante en los sistemas contenedorizados: en lugar de que cada contenedor administre sus propios archivos de registro complejos, el entorno de ejecución del contenedor captura ese flujo y lo pone a disposición de forma centralizada.
Esta es una de las razones por las que las imágenes de contenedor suelen construirse de manera diferente al software tradicional para servidores. En las plataformas de contenedores, normalmente se prefiere escribir información útil en stdout/stderr en lugar de ocultar los registros únicamente en archivos locales.
Como desarrollador o administrador de sistemas, acceder a estos registros es fundamental para comprender qué ocurre dentro de los contenedores en segundo plano. En plataformas reales como Kubernetes, este modelo de stdout/stderr también sirve de base para las canalizaciones de registro centralizado.
En este laboratorio aprenderá a:
- Ejecutar un contenedor que genere una salida continua.
- Obtener los registros generados hasta el momento.
- Seguir los registros en tiempo real para supervisar la aplicación mientras se ejecuta.
- Detener la supervisión de forma segura sin detener la aplicación.
Iniciar un proceso en segundo plano
En este paso iniciará un contenedor de Docker en modo desconectado. Para simular una aplicación real, ejecutaremos un script sencillo que imprime un mensaje cada segundo.
Cuando ejecuta un contenedor en modo desconectado mediante la opción -d, el contenedor se ejecuta en segundo plano, por lo que no verá su salida inmediatamente en el terminal.
La salida sigue existiendo; Docker la captura en lugar de transmitirla directamente a la sesión actual del intérprete de comandos.
Ejecute el siguiente comando para iniciar el contenedor:
docker run -d --name web-log-app alpine sh -c "while true; do echo 'Application is running...'; sleep 1; done"
Desglose del comando:
docker run -d: inicia el contenedor en segundo plano.--name web-log-app: asigna al contenedor el nombre"web-log-app".alpine: utiliza la imagen ligera"Alpine Linux".sh -c "...": es el comando que se ejecuta dentro del contenedor. Ejecuta un script de shell con un bucle infinito (while true) que imprime un mensaje (echo) y espera 1 segundo (sleep 1) en cada iteración.
Verifique que el contenedor esté en ejecución:
docker ps
Debería ver web-log-app en la lista de contenedores activos.
Ver los registros existentes
Como el contenedor se ejecuta en segundo plano, su salida no aparece en la vista actual del terminal. Docker captura esa salida y permite verla mediante el comando docker logs.
En este paso obtendrá los registros generados desde que se inició el contenedor.
Ejecute el siguiente comando:
docker logs web-log-app
Verá una lista de mensajes "Application is running...".
Cómo funciona:
El comando docker logs recupera todos los registros almacenados hasta ese momento y los muestra en pantalla. Después termina inmediatamente y le devuelve al prompt. Esto resulta útil para comprobar el historial de una aplicación o verificar su estado de inicio.
Por tanto, docker logs muestra la salida histórica disponible hasta el momento; no abre un shell interactivo dentro del contenedor. Es una vista de solo lectura de lo que el proceso principal del contenedor ha estado escribiendo.
Si vuelve a ejecutar el comando después de unos segundos, verá una lista más larga porque el contenedor sigue generando registros en segundo plano.
docker logs web-log-app
Supervisar los registros en tiempo real
A veces no basta con ver los registros anteriores. Puede necesitar observarlos mientras se generan para depurar un problema o supervisar el tráfico en directo. Esto es similar a utilizar el comando tail -f en Linux.
En este paso utilizará la opción -f (follow) para transmitir los registros en tiempo real.
Ejecute el siguiente comando:
docker logs -f web-log-app
¿Qué está ocurriendo?
El prompt no vuelve a aparecer. En su lugar, el terminal queda ahora «conectado» al flujo de registros del contenedor. Verá aparecer un nuevo mensaje "Application is running..." cada segundo.
Conceptualmente, esto es similar a tail -f, pero la fuente de datos es el flujo de registros capturado por Docker, no un archivo normal que esté leyendo directamente.
Este modo resulta muy útil para observar el comportamiento de una aplicación mientras interactúa con ella.
Desconectarse y realizar la limpieza
Actualmente, el terminal sigue ocupado siguiendo los registros. El contenedor continúa en ejecución y el comando docker logs espera nueva salida.
Para dejar de observar los registros y volver al prompt, debe enviar una señal de interrupción.
Presione Ctrl+C en el teclado.
Concepto importante:
Al presionar Ctrl+C aquí, detiene el comando docker logs —el visor—, pero no detiene el contenedor. El contenedor web-log-app sigue ejecutándose en segundo plano y generando registros.
Esta diferencia es importante desde el punto de vista operativo. Observar un contenedor y controlarlo son acciones distintas, y confundirlas es un error común entre principiantes.
Puede comprobarlo revisando la lista de procesos:
docker ps
Todavía debería ver web-log-app en la lista.
Limpieza:
Ahora que ha terminado el laboratorio, detenga y elimine el contenedor para liberar recursos. Utilizaremos docker rm -f, que fuerza la eliminación de un contenedor en ejecución, combinando las acciones de detenerlo y eliminarlo.
docker rm -f web-log-app
Resumen
En este laboratorio ha aprendido los fundamentos para acceder a los registros de contenedores de Docker. Ha practicado lo siguiente:
- Ejecutar un proceso en segundo plano: usar
docker run -dpara mantener libre el terminal. - Ver los registros existentes: usar
docker logs <container_name>para consultar la salida anterior. - Supervisar los registros en tiempo real: usar
docker logs -f <container_name>para transmitir la salida a medida que se genera. - Desconectarse: usar
Ctrl+Cpara dejar de ver los registros mientras la aplicación continúa en ejecución.
Estas habilidades son esenciales para depurar y supervisar aplicaciones contenedorizadas en cualquier entorno.



