docker images や docker images -a とすると、REPOSITRYが <none> で、尚且TAGも <none> と表示されるイメージが生成されることがあります。
どうやらこれには2種類のケースがあるようです。
- Dockerイメージの中間層に位置する部分として使われているイメージが
<none>と表示される - 同一のDockerfileを使用してTAGの異なるDockerイメージをビルドしようとすると古いイメージが
<none>と表示される
よくググって <none> になっているイメージを消そう系は、すべて2.のケースが当てはまるのだと思います。これらのイメージを dangling images と言うらしいです。
そもそも1.のケースで生成された <none> のイメージは、以下のようなエラーメッセージが表示されて削除できないかと思います。
$ docker image rm f3097c2cbe74
Error response from daemon: conflict: unable to delete f3097c2cbe74 (cannot be forced) - image has dependent child images
また dangling images を消すために色々な記事で何やらややこしいコマンドを紹介されていますが、最近のバージョンでは docker image prune としてあげるだけでお掃除ができるようになっています。
Dockerについてはまだまだわからないことだらけなので、引き続き勉強していって学んだことを共有していきたいと思います。