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


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 raw para enviarlo a algún lugar, por ejemplo? Dónde se encuentra? Supongo que es registro separado por cada contenedor(dentro del contenedor? pero, ¿dónde puedo encontrarlo?

Author: user606521, 2015-10-08

5 answers

Los registros de un contenedor se pueden encontrar en:

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

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

 89
Author: Michael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-27 16:18:18

Puedesdocker inspect cada contenedor para ver dónde están sus troncos:

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.

Fijación de la cantidad de espacio reservado para los registros

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

Docker 1.8 y docker-compose 1.4 ya existe un método para limitar el tamaño del registro utilizando docker compose log driver 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 los archivos de docker compose 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 logs no terminar

 56
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-16 05:01:22

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

docker ps -qa | xargs docker inspect --format='{{.LogPath}}' | xargs ls -hl
 2
Author: That Brazilian Guy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-27 16:38:51

Para ver directamente el archivo de registro en less, utilizo:

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

Ejecutar como ./viewLogs.sh NOMBRE DEL CONTENEDOR

 1
Author: icyerasor,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-23 19:01:56

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

/data/docker/containers/<container id>/<container id>-json.log
 0
Author: lixzhang,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-22 18:30:40