[Docker] system prune で不要なイメージ・コンテナを一掃する
Tech※ 本記事はアフィリエイト広告(Amazonアソシエイト)を含みます。
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