En este artículo, le mostraremos todo lo que necesita saber sobre los registros de Docker y cómo trabajar con ellos.
La vida sería mucho más sencilla si las aplicaciones que se ejecutan dentro de los contenedores Docker siempre se comportaran correctamente. Cuando las cosas inevitablemente comienzan a salir mal, necesita información de diagnóstico para descubrir cómo y por qué.
Si es administrador del sistema y es responsable de crear y administrar aplicaciones en contenedores, el registro de docker es uno de los más importantes para usted. Tratar con los registros es una de las mejores maneras de ayudar a revelar errores, ayudar en la depuración y optimizar el rendimiento de su aplicación.
Entonces, profundicemos en el registro de Docker y sus archivos de registro.
Qué son los registros de Docker
Primero, debe comprender cómo se generan los registros.
En pocas palabras, los registros de Docker son la salida de la consola de los contenedores en ejecución . Proporcionan el stdout
(salida estándar) y stderr
(error estándar) secuencias de procesos que se ejecutan dentro de un contenedor. En un contenedor, Docker observa stdout
y stderr
y recopila la salida de los flujos, y esta es la fuente de los registros del contenedor.
Iniciar sesión en Docker no es lo mismo que iniciar sesión en otro lugar. En Docker, todo lo escrito en stdout
y stderr
streams se envía implícitamente a un controlador de registro, que proporciona un mecanismo para acceder a estos flujos y enviar los registros a un archivo. El controlador predeterminado para los registros de Docker es "archivo json", que escribe los registros en archivos locales en el host de Docker en formato JSON.
Todos los registros almacenados en el contenedor se eliminarán cuando finalice o se apague.
El siguiente ejemplo muestra los registros JSON creados con el controlador de archivos json:
{"log":"Adding password for user webdav\n","stream":"stderr","time":"2021-08-01T15:58:05.329724917Z"}
Puede usar el siguiente comando para encontrar el controlador de registro predeterminado actual:
docker info --format '{{.LoggingDriver}}'
json-file
Dónde se almacenan los registros de Docker
Si usa el formato de registro predeterminado, que es JSON, los registros de un contenedor se pueden encontrar en /var/lib/docker/containers/
directorio en un host Linux Docker.
/var/lib/docker/containers/<container-id>/<container-id>-json.log
En la ruta que se muestra arriba, el <container-id>
es el id del contenedor en marcha. Si no está seguro de qué id está relacionado con qué contenedor, puede ejecutar docker container ls
Comando para enumerar todos los contenedores en ejecución.
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 51 minutes ago Up 51 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
Cómo ver los registros de Docker
Supongamos que estaba ejecutando un contenedor y desea acceder a los registros de Docker para este contenedor. ¿Cómo puedes lograr esta tarea?
Primero, puede usar el siguiente comando para verificar los contenedores que se están ejecutando actualmente:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
99e9b6f4b1a3 jbbodart/alpine-nginx-webdav "/bin/sh -c '/entryp…" 58 minutes ago Up 58 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp webdav
Este comando imprime una lista de contenedores en ejecución. En nuestro caso, el parámetro más importante es el ID DEL CONTENEDOR , que usaremos en el siguiente paso.
Ahora que está seguro de que su contenedor se está ejecutando, usemos el ID DEL CONTENEDOR para ver todos sus registros.
Ver registros de Docker
Para consultar los registros del contenedor, use los docker logs
comando. Es un comando que muestra toda la información registrada por un contenedor en ejecución. Con docker logs CONTAINER_ID
, puede ver todos los registros transmitidos por un contenedor específico identificado por una ID única.
docker logs 99e9b6f4b1a3
172.17.0.1 - webdav [01/Aug/2021:18:38:39 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021/08/01 18:39:09 [info] 10#10: *3 client 172.17.0.1 closed keepalive connection
172.17.0.1 - webdav [01/Aug/2021:18:39:09 +0000] "PUT /docker-logs.png HTTP/1.1" 201 25 "-" "curl/7.78.0"
Cómo seguir el registro del contenedor
Aunque esto le mostrará los registros, no le permitirá ver la salida del registro continuo. Usando el -f
marca seguirá los registros del contenedor de Docker.
docker logs -f 99e9b6f4b1a3
Mostrar solo las últimas líneas
En algunos casos, desea verificar rápidamente solo las últimas 10 filas de registro para su contenedor. Puedes usar el --tail
opción para especificar el número de registros que desea ver.
docker logs --tail 10 99e9b6f4b1a3
Ver registros desde una fecha específica
Cuando está inspeccionando sus registros de Docker, a menudo desea limitar la salida a un número determinado de líneas, para no inundarse con información.
Si desea ver los registros desde un punto específico en el tiempo hasta ahora, el --since
opción ayuda con esta tarea.
Por ejemplo, para ver los registros del contenedor desde hace 20 minutos, escribiría:
docker logs --since 20m 99e9b6f4b1a3
También puede escribir un formato de fecha siempre que se proporcione en formato ISO:
docker logs --since 2021-07-19T10:00:00 99e9b6f4b1a3
Ver registros hasta una fecha específica
Para ver los registros hasta una fecha específica, utilice --until
opción con una fecha o una duración.
docker logs --until 20m 99e9b6f4b1a3
O también puede proporcionar un formato de fecha como lo hizo antes para el --since
opción.
docker logs --until
2021-07-19T10:00:00 99e9b6f4b1a3
Conclusión
Los registros de Docker lo ayudan a depurar y solucionar problemas más rápido. En este tutorial, aprendió qué son y cómo se pueden inspeccionar y usar opciones para monitorearlos.
Si tiene alguna pregunta o comentario, no dude en dejar un comentario.