DockerのREPOSITORYが<none>になっているイメージを一括削除する
…なんだこれ
…<none> … とは … ?
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php latest 20dbfda080a7 2 days ago 141MB
<none> <none> 25d674b71dda 2 days ago 1.83GB
<none> <none> a12386aeb85b 2 days ago 1.57GB
mysql latest 61e8fee5cfbe 2 days ago 165MB
redis latest 77b56007461f 2 days ago 83.4MB
nginx latest 078b3257ac26 2 days ago 152MB
<none> <none> 58fc0a75d55e 2 days ago 141MB
Dockerでいろんなイメージでコンテナを作っては削除を繰り返し行なっているといつの間にか増えていっている <none> イメージ。
今回は、この<none>イメージをかんたんに一括削除する方法と<none>イメージとは何なのかについて解説します!
- 試行錯誤を繰り返しているうちに増えていた<none>イメージを削除したい
- そもそも<none>イメージってなに?どうしてできるの?
ダウンロード済みの Docker イメージを確認する
現在ダウンロード済みのDockerイメージを確認します。
(確認作業なので、やらなくても削除は可能です)
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php latest 20dbfda080a7 2 days ago 141MB
<none> <none> 25d674b71dda 2 days ago 1.83GB
<none> <none> a12386aeb85b 2 days ago 1.57GB
mysql latest 61e8fee5cfbe 2 days ago 165MB
redis latest 77b56007461f 2 days ago 83.4MB
nginx latest 078b3257ac26 2 days ago 152MB
<none> <none> 58fc0a75d55e 2 days ago 141MB
REPOSITORY
や TAG
が <none> となっているものが、今回削除する <none>イメージ です。
<none> イメージを削除する
次に、実際に <none> イメージを削除していきます。
といっても難しい手順ではなく、docker image prune
というコマンドを一つ実行するだけです。
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
deleted:
sha256:25d674b71dda51e892d5a56e24b6f48a90837760db0a0cd5fc98fa2c530ac334
deleted:
sha256:a12386aeb85bd797f5f26abc7ceec39d7071bef90ec9ce3512f0621a3f0affd8
deleted:
sha256:58fc0a75d55e449a00dab8b974f60a4366452723420dbee71058ee4f3543907f
Total reclaimed space: 0B
Are you sure you want to continue? [y/N]
と聞かれるので y
(YES) と入力し Enter を押すと削除が実行されます(N
はNO、削除は実行されない)。
すると<nome>イメージの削除が実行され、削除されたイメージのIDが一覧で表示されます。
Total reclaimed space
は、再利用できるようになった領域サイズを示しています。
削除されたか $ docker images
で確認してみましょう。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
php latest 20dbfda080a7 2 days ago 141MB
mysql latest 61e8fee5cfbe 2 days ago 165MB
redis latest 77b56007461f 2 days ago 83.4MB
nginx latest 078b3257ac26 2 days ago 152MB
そもそも <none> イメージとは?
<none>イメージは dangling image (宙ぶらりんのイメージ) と言われています。
これはタグもなく、どのコンテナからも参照されていないイメージのことです。
なぜこのようなイメージが溜まっていくのかというと、Docker自体の思想によるものです。
Dockerには、イメージの他にコンテナ・ボリューム・ネットワークといったオブジェクトが存在しますが、そのクリーンアップは慎重で、ユーザーが明示的に削除しない限り、削除されません。
そのため、試行錯誤を繰り返す中でコンテナに紐づけられないイメージが発生し、それが<none>イメージ(dangling image)として残ってしまうわけです。
以上になります。
色々試行錯誤していると、いつの間にか増えている <none> イメージ。
時々お掃除して、気持ち新たに開発していきましょう!