docker logs <C> returns nothing

Kevin Burton picture Kevin Burton · Sep 21, 2017 · Viewed 9.4k times · Source

I build and run a docker image with

docker run --detach --name api rkevinburton/myagsourceapi

But when I 'docker ps -a' I get a message that this container has exited.

CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS                     PORTS               NAMES
ee956fbf1d7f        rkevinburton/myagsourceapi   "/bin/bash"         10 seconds ago      Exited (0) 8 seconds ago                       api

So I want to find out why it exited. So I issue the command

docker logs ee

But this command returns nothing. As the docker host is a Windows machine I looked on ~\AppData\Local\Docker but the information in the log*.txt or install-log.* didn't seem to help me any. How can I get more information on why the container 'Exited'?

Answer

tgogos picture tgogos · Sep 22, 2017

Docker containers exit when their main process finishes. That is why you don't get any logs.

The docker logs command batch-retrieves logs present at the time of execution.

(see: https://docs.docker.com/engine/reference/commandline/logs/)

An example:

The following will create a new container and start it:

docker run -d --name=my_test_container alpine ping -c 20 127.0.0.1
[----run----]   [--------name--------] [image][-----command------]

Try to use the following, before ping command stops:

  • docker logs my_test_container
  • docker logs --follow my_test_container

The first one shows what has been printed out by ping (until then) and the second one gives you logs as ping prints out new lines.

After 20 ping requests, the ping command finishes and the container stops.

ubuntu@ubuntu:~$ docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
e8f371000146        alpine              "ping -c 20 127.0.0.1"   29 seconds ago      Exited (0) 9 seconds ago                       my_test_container