Edited at

Dockerで none なイメージを一括で削除するワンライナー

docker pullを何回も叩いていると、ローカルのイメージが<none>になってしまうことがあります。

$ docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
node latest 6d123ea65021 2 weeks ago 706.5 MB
centos latest 2b8d6139a545 2 weeks ago 212.1 MB
postgres latest dcce0da1c311 2 weeks ago 213.9 MB
mysql latest 97454fa6c9d3 2 weeks ago 282.8 MB
<none> <none> 9552b2f0723b 2 weeks ago 255.7 MB
debian latest 1265e16d0c28 2 weeks ago 84.98 MB

<none>になる条件は、新しいイメージが既存のタグを再利用したときにそうなるようです。

古い方のイメージがタグを剥奪されるみたいな感じ。


<none>イメージを一括削除する

-f(フィルタ)オプションを使うと イメージを抽出することができます。

docker images -f "dangling=true"

この出力を使ってイメージ一括削除すればOKです。

docker rmi $(docker images -f "dangling=true" -q)


追記

v1.25以降は、下記のようにもっと簡単にできます。

https://docs.docker.com/engine/reference/commandline/image_prune/

docker image prune