Contenido
Tutorial de docker logs: ver los registros de un contenedor con -f, --tail y --since
docker logs muestra la salida del proceso principal de un contenedor. Para el flujo de depuración, consulta Ver registros y depurar.
Sintaxis
docker logs [OPCIONES] CONTENEDOR
Opciones
| Opción | Descripción |
|---|---|
-f, --follow | Sigue mostrando los registros nuevos; pulsa Ctrl+C para parar |
-n, --tail NÚMERO | Muestra solo las últimas n líneas (por defecto: all) |
-t, --timestamps | Añade una marca de tiempo delante de cada línea |
--since TIEMPO | Muestra solo los registros posteriores a un momento, como 10m, 2h o 2026-10-14T08:00:00 |
--until TIEMPO | Muestra solo los registros anteriores a un momento |
--details | Muestra detalles adicionales, como las etiquetas añadidas con --log-opt al arrancar |
Ejemplos
El contenedor de ejemplo escribe line N en stdout y error N en stderr una vez por segundo, cinco veces en total:
docker run -d --name logger alpine:3.23 sh -c 'for i in 1 2 3 4 5; do echo line $i; echo error $i >&2; sleep 1; done; sleep 600'
Todos los registros, las últimas líneas y las marcas de tiempo
$ docker logs logger
line 1
error 1
line 2
error 2
line 3
error 3
error 4
line 4
error 5
line 5
$ docker logs --tail 2 logger
error 5
line 5
$ docker logs -t --tail 2 logger
2026-10-13T05:28:48.681587356Z error 5
2026-10-13T05:28:48.681659184Z line 5
- Sin opciones se muestran todos los registros, con stdout y stderr intercalados por orden temporal.
--tail 2muestra solo las 2 últimas líneas. Úsalo cuando haya muchos registros.-tañade la hora registrada por Docker (UTC), con precisión de nanosegundos.
Registros recientes
$ docker logs --since 3s logger
error 4
line 4
error 5
line 5
--since 3s muestra solo los registros de los últimos 3 segundos. Es más preciso que --tail para ver "qué acaba de pasar".
stdout y stderr
$ docker logs logger 2>/dev/null
line 1
line 2
line 3
line 4
line 5
$ docker logs logger 2>&1 | grep error
error 1
error 2
error 3
error 4
error 5
docker logsenvía el stdout y el stderr del contenedor por separado al stdout y al stderr de tu terminal.2>/dev/nulldescarta stderr y deja solo las líneasline.- Para buscar mensajes de error con
grep, primero une stderr a stdout con2>&1. Si no, la tubería solo recibe stdout y no encuentra nada.
Seguir los registros
$ timeout 3 docker logs -f --tail 1 logger
line 5
-f espera continuamente registros nuevos. Combinado con --tail 1, primero muestra la última línea y luego sigue los nuevos. Aquí timeout 3 termina el comando automáticamente a los 3 segundos; normalmente lo detienes con Ctrl+C. El comando equivalente en Compose es docker compose logs -f SERVICIO.
Capítulos relacionados
- Ver registros y depurar
- Comandos de Docker Compose:
docker compose logs - Limpiar espacio en disco: límite de tamaño de los registros
Ejercicios
Ejercicio: muestra los registros del contenedor logger del último minuto que contengan error, con marcas de tiempo.
Respuesta
docker logs -t --since 1m logger 2>&1 | grep error
Preguntas frecuentes
¿Por qué docker logs no muestra nada?
docker logs solo recoge lo que el proceso principal del contenedor escribe en la salida estándar (stdout) y en la salida de error (stderr). Si el programa escribe sus registros en un archivo (por ejemplo, /var/log/app.log), léelo con docker exec o configura el programa para que escriba en stdout.
¿Por qué los registros de mi programa en Python tardan tanto en aparecer?
Python guarda la salida en un búfer cuando no hay terminal. Define la variable de entorno PYTHONUNBUFFERED=1 para que se muestre al instante. Consulta [Aplicaciones Python](/es/docker/python/).
¿Por qué docker logs | grep no encuentra un mensaje de error que sé que está ahí?
Los mensajes de error suelen ir a stderr, y la tubería | solo pasa stdout. Usa docker logs CONTENEDOR 2>&1 | grep PALABRA.
¿Qué hago si los registros ocupan demasiado espacio en disco?
Limita el tamaño de los registros (--log-opt max-size=10m --log-opt max-file=3). Encontrarás un ejemplo probado en [Limpiar espacio en disco](/es/docker/cleanup/).
Actualizado 14 de octubre de 2026