After constantly battling with my system over free space at a crucial time when deadlines had to be met, I finally decided to spend time figuring out what the heck was going on. docker-compose up was failing with errors like INTERNAL ERROR: cannot create temporary directory! and on checking, /root partition indeed had 0% free space. As a stopgap, I deleted unused kernel images, jdks, apt cache, etc. just so I could continue working.

I was surprised to find /var/lib/docker/aufs/diff take 52GB of my precious SSD space. Surprised, because I have a cron job run everyday to delete dangling/stale containers and images, and I expected any disk space used by them to be freed up.

baobab

Run du -shc /var/lib/docker to see your damage. Note that this includes files that are used by some of your containers. Our servers also have the same issue, with the directory swelling up to 24GB+. The only difference on the server is it uses overlay2 instead of aufs as the storage driver.

Solution

docker system prune [docs]

Follow options that make sense in your case.

Check your docker version to ensure this command is available. If this doesn't seem to free enough disk space (as seen in my case), upgrade to 17.06.2-ce+ [info] and run the above command again. This seems to fix the issue properly.

Note that upgrading docker will often affect your containers so take care doing this in production!

Related:
https://github.com/moby/moby/issues/21925
https://github.com/moby/moby/issues/22207

Sidenote:
Having a couple of extra linux kernel images installed or Oracle Java installed always helps in freeing up disk space when you really need it!