Docker mira el registro de un contenedor salido


¿Hay alguna forma de que pueda ver el registro de un contenedor que ha salido?

Puedo obtener el id de contenedor del contenedor salido usando docker ps -a pero quiero saber qué pasó cuando se estaba ejecutando.

 22
Author: Knows Not Much, 2016-04-16

4 answers

Uso docker logs. También funciona para contenedores detenidos y captura todos los flujos STDOUT y STDERR del proceso principal del contenedor:

$ docker run -d --name test debian echo "Hello World"
02a279c37d5533ecde76976d7f9d1ca986b5e3ec03fac31a38e3dbed5ea65def

$ docker ps -a
CONTAINER ID    IMAGE     COMMAND        CREATED             STATUS                     PORTS               NAMES
49daa9d41a24    debian    "echo test"    2 minutes ago       Exited (0) 2 minutes ago                       test

$ docker logs -t test
2016-04-16T15:47:58.988748693Z Hello World
 28
Author: helmbert,
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
2016-04-16 15:53:01

docker logs --tail=50 <container id> para las últimas cincuenta líneas - útil cuando su contenedor ha estado funcionando durante mucho tiempo.

 10
Author: kliew,
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-19 09:15:28

Para ver directamente el archivo de registro de un contenedor salido en less, desplazado hasta el final del archivo, utilizo:

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

Ejecutar como ./viewLogs.sh NOMBRE DEL CONTENEDOR

Este método tiene el beneficio sobre los enfoques basados en docker logs, que el archivo se abre directamente, en lugar de transmitirse.

Sudo es necesario, ya que el archivo LogPath/por lo general está en propiedad de la raíz

 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
2018-01-17 09:58:45

Puede usar el siguiente comando para copiar registros incluso desde un contenedor salido:

docker cp container_name:path_of_file_in_container destination_path_locally

Eg:

docker cp sravya:/tmp/report /root/mylog
 1
Author: Sravya,
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-05-07 12:16:04