初級情報インフラ管理者の技術メモ

ほぼ自分用の技術メモです。

タグが<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に書いていたことに気付いた。