Docker look at the log of an exited container

Docker

Docker Problem Overview


Is there any way I can see the log of a container that has exited?

I can get the container id of the exited container using docker ps -a but I want to know what happened when it was running.

Docker Solutions


Solution 1 - Docker

Use docker logs. It also works for stopped containers and captures the entire STDOUT and STDERR streams of the container's main process:

$ 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

Solution 2 - Docker

docker logs --tail=50 <container id> for the last fifty lines - useful when your container has been running for a long time.

Solution 3 - Docker

You can use below command to copy logs even from an exited container :

> docker cp container_name:path_of_file_in_container destination_path_locally

Eg:

docker cp sample_container:/tmp/report /root/mylog

Solution 4 - Docker

To directly view the logfile of an exited container in less, scrolled to the end of the file, I use:

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

run as ./viewLogs.sh CONTAINERNAME

This method has the benefit over docker logs based approaches, that the file is directly opened, instead of streamed.

sudo is necessary, as the LogPath/File usually is under root-owned

Solution 5 - Docker

@icyerasor comment above actually helped me solve the issue. In my particular situation the container that has stopped running had no container name only container id.

Steps that found the logs also listed in this post

  1. Find the stopped container via docker ps - a
  2. grab the container id of the failed container
  3. Substitute it in this command cat /var/lib/docker/containers/<container id>/<container id>-json.log

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKnows Not MuchView Question on Stackoverflow
Solution 1 - DockerhelmbertView Answer on Stackoverflow
Solution 2 - DockerkliewView Answer on Stackoverflow
Solution 3 - DockerSravyaView Answer on Stackoverflow
Solution 4 - DockericyerasorView Answer on Stackoverflow
Solution 5 - DockerNorbertView Answer on Stackoverflow