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ónDescripción
-f, --followSigue mostrando los registros nuevos; pulsa Ctrl+C para parar
-n, --tail NÚMEROMuestra solo las últimas n líneas (por defecto: all)
-t, --timestampsAñade una marca de tiempo delante de cada línea
--since TIEMPOMuestra solo los registros posteriores a un momento, como 10m, 2h o 2026-10-14T08:00:00
--until TIEMPOMuestra solo los registros anteriores a un momento
--detailsMuestra 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 2 muestra solo las 2 últimas líneas. Úsalo cuando haya muchos registros.
  • -t añ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 logs envía el stdout y el stderr del contenedor por separado al stdout y al stderr de tu terminal.
  • 2>/dev/null descarta stderr y deja solo las líneas line.
  • Para buscar mensajes de error con grep, primero une stderr a stdout con 2>&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

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