basnotes

 

Reclaiming Unused Docker Space

tip

This morning I noticed my server’s disk space was already used more than 90% and trends shown by my InfluxDB dashboards showed, it would be fully depleted soon if I didn’t do anything about it. So, I used du -hn 1 starting from / to track down where the disk space was used, and it showed Docker was the culprit.

Further analysis pointed me to the /var/snap/docker/common/var-lib-docker/overlay2 directory, so I searched the internet for a way to clean up this directory.

docker system prune

My first hit pointed me to docker system prune, which allows to remove all images and containers not currently in use by active containers. I wanted a bit more information on which data would be removed and also found docker system df to tell me about it:

$ sudo docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              148                 13                  75.48GB             73.11GB (96%)
Containers          15                  14                  43.37GB             259.1kB (0%)
Local Volumes       15                  1                   17.07GB             16.85GB (98%)
Build Cache         0                   0                   0B                  0B

The RECLAIMABLE part looked really good and as I had all containers I need up-and-running, I decided to run docker system prune. Checking docker system df again showed a large improvement:

$ sudo docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              53                  13                  12.76GB             9.689GB (75%)
Containers          15                  15                  43.38GB             0B (0%)
Local Volumes       15                  1                   17.07GB             16.85GB (98%)
Build Cache         0                   0                   0B                  0B

This already reclaimed a lot of disk space, pushing down usage from 90%+ to about 65%!

docker volume prune

As can be seen in the last output from sudo docker system df, there is still ‘local volumes’ space that can be reclaimed. Apparently docker system prune does not include that.

So, I used docker volume prune to reclaim space occupied by unused volumes, resulting in:

$ sudo docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              53                  13                  12.76GB             9.689GB (75%)
Containers          15                  12                  43.43GB             549.7kB (0%)
Local Volumes       1                   1                   219.1MB             0B (0%)
Build Cache         0                   0                   0B                  0B

Disk space usage is now pushed down to 58%!

Conclusion

Experimenting with running applications in Docker is really fun, but it leaves behind a lot of mess…

Regularly check your disk space usage using docker system df and clean if needed using docker system prune and docker volume prune.

February 2, 2021