Clean up after Docker
After many build and run sessions with Dockerfiles, you'll be mostly left with a few left-over containers, unneeded mounts and exited images. Especially if you don't use the 'rmi' flag when running docker build
.
Find out how many images Docker has on a system
You can always inspect which images are currently clogging up your system by running docker images
and docker ps -a
for containers.
Remove temporary built images
In order to quickly get rid of any images that aren't needed anymore, simply run
docker images -notrunc| grep none | awk '{print $3}' | xargs -r docker rmi
*This will print out all images docker has, without truncating their IDs.
*Filter through such that have the identifier 'none' in the output.
*Grab their IDs
*And run the docker 'remove image' command, if any such images were given out ( xargs -r
only runs if output was passed along )
Remove Docker containers with Exit status
The same counts for any left-over containers which already have the Exit status :
docker ps -a -notrunc | grep 'Exit' | awk '{print $1}' | xargs -r docker rm
Reduce Googles' and our pageload, save your time – create an alias
Now since we use those commands here very frequently, it's best to simply add those as aliases to your ~/.bashrc. ( Or – even better! – to your dotfiles; so you have them handy on any server you're working on )
alias dockercleancontainers="docker ps -a -notrunc| grep 'Exit' | awk '{print \$1}' | xargs -L 1 -r docker rm"
alias dockercleanimages="docker images -a -notrunc | grep none | awk '{print \$3}' | xargs -L 1 -r docker rmi"
alias dockerclean="dockercleancontainers && dockercleanimages"
Now every time you went through some longer build and run testing sessions, simply run dockerclean
to get rid of the leftovers.
Simple as that!
Comment
by Josiah
Thanks for the great oneliners!
Just of note is that -notrunk is now deprecated; replaced by –no-trunc
March 25, 2014