¿Dónde está un archivo de registro con registros de un contenedor?

117

Estoy ejecutando varios contenedores usando docker-compose. Puedo ver los registros de la aplicación con el comando docker-compose logs. Sin embargo, me gustaría acceder al archivo de registro sin procesar para enviarlo a algún lugar, por ejemplo. ¿Donde está localizado? Supongo que es un registro separado para cada contenedor (¿dentro del contenedor?) Pero, ¿dónde puedo encontrarlo?

usuario606521
fuente

Respuestas:

191

Los registros de un contenedor se pueden encontrar en:

/var/lib/docker/containers/<container id>/<container id>-json.log

(si usa el formato de registro predeterminado que es json)

Miguel
fuente
3
Hay muchas carpetas como 004279dd2985037950beeba7e6fe45c10354476d3b82afb68e72dd612b03a8ff. ¿Cómo saber qué carpeta buscar para un contenedor en particular?
Praveen Sripati
3
@PraveenSripati, la identificación del contenedor para ejecutar contenedores se muestra en la primera columna si lo hacedocker ps
CS
1
@PraveenSripati escribe docker ps, obtendrás todos tus contenedores disponibles junto con sus ID. Copie el ID de su contenedor deseado, luego de /var/lib/docker/containers/ejecutar ls | grep <paste the copied docker ID>. Luego verá ese contenedor docker
TheLebDev
cd /var/lib/docker/containers/ -bash: cd: / var / lib / docker / containers /: Permiso denegado sudo cd /var/lib/docker/containers/ sudo: cd: comando no encontrado
canbax
2
@Chris tuve que hacer docker ps --no-truncpara ver la identificación completa
Dan Z
97

Puede docker inspectcada contenedor para ver dónde están sus registros:

docker inspect --format='{{.LogPath}}' $INSTANCE_ID

Y, en caso de que estuviera tratando de averiguar dónde estaban los registros para administrar su tamaño colectivo, o ajustar los parámetros del registro en sí, encontrará lo siguiente relevante.

Arreglando la cantidad de espacio reservado para los registros

Esto se toma de Solicitud para la capacidad de borrar el historial de registros (problema 1083) ):

Docker 1.8 y docker-compose 1.4 ya existe un método para limitar el tamaño del registro usando el controlador de registro de docker compose y log-opt max-size:

mycontainer:
  ...
  log_driver: "json-file"
  log_opt:
    # limit logs to 2MB (20 rotations of 100K each)
    max-size: "100k"
    max-file: "20"

En docker compon archivos de la versión '2', la sintaxis cambió un poco:

version: '2'
...
mycontainer:
  ...
  logging:
    #limit logs to 200MB (4rotations of 50M each)
    driver: "json-file"
    options:
      max-size: "50m"
      max-file: "4"

(tenga en cuenta que en ambas sintaxis, los números se expresan como cadenas, entre comillas)

Posible problema con docker-compose logsno terminar

  • problema 1866 : el comando logsno sale si el contenedor ya está detenido
VonC
fuente
1
La versión corta: docker inspect -f '{{.LogPath}}' $ INSTANCE_ID
Bienvenido David
12

Para ver cuánto espacio ocupa el registro de cada contenedor, use esto:

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl

(es posible que necesite un sudoantes ls).

Ese chico brasileño
fuente
Me niegan un permiso.
Shakedk
1
Agregar sudo al final ayudó: docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs sudo du -hl
Shakedk
2

Para ver directamente el archivo de registro en menos, uso:

docker inspect $1 | grep 'LogPath' | sed -n "s/^.*\(\/var.*\)\",$/\1/p" | xargs sudo less

ejecutar como ./viewLogs.sh CONTAINERNAME

hielo o
fuente
2

En Windows, la ubicación predeterminada es: C:\ProgramData\Docker\containers\<container-id>-json.log.

pmohandas
fuente
¡Este es el que se usa cuando se ejecuta un contenedor local para el desarrollo! gracias - fue muy difícil encontrar esta información
Percy
1

A partir del 22/8/2018, los registros se pueden encontrar en:

/data/docker/containers/<container id>/<container id>-json.log
lixzhang
fuente
1
docker inspect <containername> | grep log
Vasili Pascal
fuente