It's possible to remove containers that aren't running? You can use the command docker container list --all to see all the container no matter the state, and then use the command docker rm containerName to delete the container.
That unhealthy status is published as an event from Docker's API, so the platform running the container is notified and can take action to fix the application. Docker also records the result of the most recent health checks, which you can see when you inspect the container.
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.
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
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.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With