¿Hay alguna forma de que pueda ver el registro de un contenedor que ha salido?
Puedo obtener la identificación del contenedor del contenedor salido usando docker ps -apero quiero saber qué sucedió cuando se estaba ejecutando.
¿Hay alguna forma de que pueda ver el registro de un contenedor que ha salido?
Puedo obtener la identificación del contenedor del contenedor salido usando docker ps -apero quiero saber qué sucedió cuando se estaba ejecutando.
Respuestas:
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
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.
docker logs --tail=50 <container id> para las últimas cincuenta líneas: útil cuando su contenedor ha estado funcionando durante mucho tiempo.
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