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

2019-03-07 19:58发布

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.

标签: docker
4条回答
太酷不给撩
2楼-- · 2019-03-07 20:38

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.

查看更多
孤傲高冷的网名
3楼-- · 2019-03-07 20:42

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.

查看更多
霸刀☆藐视天下
4楼-- · 2019-03-07 20:45

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"

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
查看更多
三岁会撩人
5楼-- · 2019-03-07 20:58

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
查看更多
登录 后发表回答