Docker mira el registro de un contenedor salido

Respuestas:

105

Utilice 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
Helmbert
fuente
4
Para una pila de docker donde se reinicia cada pocos segundos: el stack=s1 && c=$(task_id=$(docker stack ps "$stack" --filter desired-state=shutdown | tail -n +2 | head -n 1 | awk '{print $1}') && docker inspect --format '{{.Status.ContainerStatus.ContainerID}}' "$task_id") && docker logs "$c"nombre de la pila se especifica al principio del comando.
x-yuri
17

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

kliew
fuente
1
@Whitefret, he actualizado la respuesta con tu sugerencia. La respuesta original bajaría todo el registro y lo seguiría localmente, habría llevado mucho tiempo con un registro grande y una red lenta
Mateo
En el administrador de alertas veo muchos de estos mensajes, pero no estoy seguro de si están relacionados con la alerta:
Arnav Bose
10

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

P.ej:

docker cp sravya:/tmp/report /root/mylog
Sravya
fuente
6

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

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

ejecutar como ./viewLogs.sh CONTAINERNAME

Este método tiene la ventaja sobre los docker logsenfoques basados ​​en que el archivo se abre directamente, en lugar de transmitirse.

sudo es necesario, ya que LogPath / File generalmente está bajo propiedad de root

icyerasor
fuente