タグが<none>になってしまったdocker imageをまとめて削除するワンライナー
よくDockerfileの中身を精査しないままdocker buildをして失敗する私のような人間は、docker imagesしたらこんな状態になっていると思います。
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE takedah postfix 684aa52fc89e 24 hours ago 515.2 MB takedah rails 66bf45ac2ac2 11 weeks ago 1.241 GB <none> <none> c97d7e856595 11 weeks ago 1.233 GB <none> <none> 31f14a3de2ae 11 weeks ago 1.233 GB <none> <none> f22584c8eaa8 11 weeks ago 1.233 GB <none> <none> 0f843867c4f6 11 weeks ago 1.063 GB
このタグが<none>になっているイメージをまとめて消すワンライナーです(実行は自己責任で!)。
$ sudo docker images | awk '{if ($2 ~ "<none>") print $3}' | xargs sudo docker rmi
docker imagesコマンドの標準出力をawkに渡して、第2フィールド(TAG)が<none>であれば、第3フィールド(IMAGE ID)を出力し、最後にxargsに渡してdocker rmiコマンドの引数にする、という仕掛けです。
って書いて、先日のDocker勉強会@旭川で@smaguchiさんが既にやり方を@SamuraiT01くんのGistに書いていたことに気付いた。