A Simple Way to Clean up Docker

March 27, 2020 · 1 min read

background

Have you ever had a full hard drive because of Docker? I had. All those old Docker containers, images, and volumes take up so much space. I used commands like docker stop $(docker ps -a -q) and docker rm $(docker ps -a -q)  to remove all containers and images.

But newer Docker versions (Docker with API version 1.25+) have this handy cleanup command:

docker system prune --volumes

It cleans up all stopped containers, unused networks, dangling images, and the build cache. The --volumes flag also removes all unused volumes. You can skip the "are you sure" prompt by using the -f or --force flag

Beforehand, you will want to stop all containers using this command:

docker container stop $(docker container ls -aq)

And voilá! You have a clean local Docker installation.

Bonus tips:

  • Find out how much space Docker takes on your system with: docker system df
  • Use the until filter to only clean up stuff created more than, e.g., two days ago: docker system prune --filter "until=48h" (Docker API version 1.28+; use docker version to find out the versions of your client and daemon)
  • Only clean up containers created more than two days ago: docker container prune --filter "until=48h"