[Docker] system prune で不要なイメージ・コンテナを一掃する

Tech

※ 本記事はアフィリエイト広告(Amazonアソシエイト)を含みます。

[Docker] system prune で不要なイメージ・コンテナを一掃する

Docker を使っていると、止まったコンテナや使われていないイメージ、ビルドキャッシュがどんどん溜まってディスクを圧迫します。docker system prune でまとめて掃除できます。

まず使用量を確認

何がどれだけ食っているかを見ます。

docker system df

Images / Containers / Local Volumes / Build Cache ごとに、合計と「回収可能(RECLAIMABLE)」な量が出ます。

基本の掃除

docker system prune

これで以下がまとめて削除されます。

  • 停止中のコンテナ
  • どのコンテナからも使われていないネットワーク
  • ぶら下がり(dangling)イメージ(タグの無い中間イメージ)
  • ビルドキャッシュ

実行すると確認プロンプトが出ます。確認なしで実行するなら -f

docker system prune -f

もっと強力に:未使用イメージも全部

-a を付けると、実行中コンテナに使われていないイメージを全部削除します(dangling だけでなく、タグ付きでも未使用なら対象)。

docker system prune -a

かなり消えるので、docker pull し直す前提で。普段使うイメージまで消えて、次回ビルド/起動が遅くなる点は理解の上で。

ボリュームは別扱い(要注意)

docker system pruneデフォルトでボリュームを消しません(データ消失を防ぐため)。ボリュームも対象にするには明示的に --volumes を付けます。

docker system prune --volumes

⚠️ ボリュームには DB データなど消えると困るものが入っていることが多い。--volumes は中身を理解した上で使うこと。

個別に消したいとき

docker container prune   # 停止コンテナだけ
docker image prune       # dangling イメージだけ
docker image prune -a    # 未使用イメージ全部
docker builder prune     # ビルドキャッシュだけ

メモ

  • まず docker system df で状況確認 → prune で掃除、の流れが安全。
  • -a は未使用イメージを全消し(pull/build やり直し前提)。
  • --volumes はデータを消すので慎重に。DBコンテナを使っているなら特に。

定期的に prune しておくと、「ディスクが急に満杯」を防げます。

docker