If you use Docker (native and especially machine, which has only limited virtual disk space on macOS), you might have some problems with all those images you build during development polluting your hard drive. Good thing is, if you want all of that stuff gone, there is a neat oneliner that will do exactly that!
$ docker rm -f $(docker ps -a -q) && docker rmi -f $(docker images -q)
This oneliner consists of two commands. The latter one will only be executed if the first one is successful (due to
&& being used instead of just
;). Those two commands each consist of two commands themselves and I'll explain here what they do in the sequence they are executed:
docker ps -a -qprints out all container ids that are present on your system. The
$()syntax takes it's output as parameter for the next command
docker rm -fremoves the container passed as argument and the
-fflag makes it stop and delete running containers. (So if you want to keep the running ones, omit this)
- Now the shell checks if the command was executed successful. If yes it resumes, if not it stops.
docker images -qprints out all of the image ids present on your system. We again take it's output as parameter for the next one
docker rmi -fremoves all images present on your system. This includes all intermediate layers!
After you executed this script, all of the conatiners and images are deleted and you have a nice and clean environment.
I hope this post is helpful to you :)