Should I be concerned about excess, non-running, D

2019-03-07 20:03发布

问题:

Every docker run command, or every RUN command inside a Dockerfile, creates a container. If the container is no longer running it can still be seen with docker ps -a.

Should I be concerned with having an enormous list of non-running containers? Should I be issuing docker rm on non-running containers?

I am unsure of what performance or memory/storage penalties these non-running containers incur.

回答1:

The containers that are not running are not taking any system resources besides disk space.

It is usually good to clean up after yourself, but if you have a lot of them sitting around it shouldn't slow down performance at all.

If you do notice a slow down when running docker commands with lots of stopped containers, it might be a bug in docker, and you should submit a bug.



回答2:

The docker run documentation describes how to automatically clean up the container and remove the file system when the container exits:

  --rm=false: Automatically remove the container when it exits (incompatible with -d)

The above shows that by default containers are not removed, but adding --rm=true or just the short-hand --rm will work like so:

sudo docker run -i -t --rm ubuntu /bin/bash

When you exit from the container it will be automatically removed.

You can test this by listing your docker containers in one terminal window:

watch -n1 'sudo ls -c /var/lib/docker/containers'

And then in another window run this command to run multiple docker containers that will all automatically exit after sleeping for up to 10 seconds.

for i in {1..10}; do sudo docker run --rm ubuntu /bin/sleep $i & done


回答3:

If you run a container with a volume and do not use docker rm -v to remove it then the volume is not being removed after you remove a container. Also there is an issue with a vfs storage driver. If you forget to clean, volumes will eat up your disk space.



回答4:

I am unsure of what performance or memory/storage penalties these non-running containers incur.

In order to assess how much storage non-running Docker containers are using, you may run:

docker ps --size --filter "status=exited"
  • --size: display total file sizes (FYI: Explain the SIZE column in "docker ps -s" and what "virtual" keyword means #1520).
  • --filter "status=exited": list only stopped containers.

Equivalently, you could run: docker container ls --filter "status=exited"

You may also use the command docker system df (introduced in Docker 1.13.0, January 2017) to see docker disk usage, e.g.:

username@server:~$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              44                  28                  114.7GB             84.84GB (73%)
Containers          86                  7                   62.43GB             41.67GB (66%)
Local Volumes       2                   1                   0B                  0B
Build Cache                                                 0B                  0B


标签: docker