dockerイメージを個別に消す・全部消す

  • Docker

この記事は、構成と文章の整理にAIを使っています。
あくまで読みやすくするための補助で、内容そのものをAIにすべて任せて書いているわけではありませんが、ところどころ相談しながら整えています。

不要になったdockerイメージを消す手順のメモ。

イメージIDを確認する

docker images で一覧を出す。

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> xxxxxxxxxxxx 5 minutes ago 613MB
registry.example.com:5000/group-name/container latest zzzzzzzzzzzz 2 months ago 532MB

<none> になっているのはdangling image。ビルドの過程でタグが付け替わって残った古いイメージのこと。

IDを指定して消す

$ docker rmi xxxxxxxxxxxx
Deleted: sha256:7f125599e6e58f288ce702749476c5b31976659ae53188b59d0c726755eca4c1
Deleted: sha256:0e5b786ba12d5d47adb18d81cd69dd0dbffca3b775aba1e8609026fdeb13b5d1
...

そのイメージからコンテナが作られている(停止中も含む)と消せずにエラーになる。

Error response from daemon: conflict: unable to delete xxxxxxxxxxxx (must be forced) - image is being used by stopped container ...

構わず消したいときは -f を付ける。

$ docker rmi -f xxxxxxxxxxxx

全部消す

$ docker rmi $(docker images -q)

docker images -q でIDだけ抜き出して docker rmi に渡す形。使用中のイメージが混ざっていた場合、そのイメージだけエラーになって残るが、コマンド自体は途中で止まらず他は消える。

docker image pruneとの使い分け

docker rmi $(docker images -q) はタグ付きも含めて全消し。dangling imageだけ消したいなら docker image prune の方が目的に合っている。

$ docker image prune

停止中コンテナごとまとめて掃除したい場合は docker system prune -a という選択肢もある(ボリュームは対象外)。

特定のリポジトリだけ絞る

docker images はリポジトリ名でフィルタできるので、全部ではなく特定のイメージだけ見たいときはこう。

$ docker images "registry.example.com:5000/group-name/container"