このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Docker超入門:Dockerの大掃除!docker system prune コマンド徹底解説

Dockerの大掃除!docker system prune コマンド徹底解説

 Dockerを使っていると、いつの間にか使わないコンテナやイメージが溜まって、ディスク容量を圧迫してしまうことがあります。そんな時に役立つのが docker system prune コマンドです。まさに「Dockerの大掃除」といえるコマンドで、一気に不要なオブジェクトを整理できます。ただし、強力なコマンドなので実行時には注意も必要です。ここでは、仕組みや使い方、オプションをわかりやすく解説していきます。

docker system prune とは?

 docker system prune は、Dockerシステム内の未使用オブジェクトをまとめて削除するコマンドです。

削除対象となるのは以下のリソースです。

  • 停止したコンテナ
  • 使われていないネットワーク
  • 参照されていないイメージ
  • ビルドキャッシュ
  • (オプション指定時のみ)未使用のボリューム

つまり、Docker環境を一気にスッキリさせたいときに使う「掃除機」のような存在です。

コマンドの基本書式

docker system prune [オプション]

主なオプションと説明

オプション説明
-a, --allタグがないイメージや参照されていないイメージを含む、未使用のすべてのイメージを削除する。
--filter条件を指定して削除対象を絞り込む(例:--filter "until=24h" で24時間以上前に作成されたものを削除)
-f, --force確認プロンプトを出さずに強制実行する。
--volumes未使用のボリュームも削除する(注意が必要)

 この表からもわかる通り、「-a」や「--volumes」を使うと削除対象が大きくなるので、データ消失には十分注意しましょう。

実際に試してみる流れ

1.現在の状況を確認

  • docker image ls でイメージ一覧を確認
  • docker container ls -a でコンテナ一覧を確認実行例

実行例

PS C:\Users\joeac> docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
ubuntu       latest    353675e2a41b   12 days ago     117MB
almalinux    latest    375aa0df1af5   13 days ago     276MB
nginx        latest    d5f28ef21aab   5 weeks ago     279MB
httpd        latest    027c678f36d3   6 weeks ago     174MB
rockylinux   9.3       d7be1c094cc5   22 months ago   259MB
PS C:\Users\joeac> docker container ls -a
CONTAINER ID   IMAGE            COMMAND                   CREATED        STATUS                    PORTS     NAMES
32003149351d   almalinux        "/bin/bash"               6 hours ago    Exited (0) 6 hours ago              alma_container
845de320eb14   rockylinux:9.3   "/bin/bash"               8 hours ago    Exited (0) 8 hours ago              rocky_container
34cc5808b22c   ubuntu           "/bin/bash"               10 hours ago   Exited (0) 10 hours ago             ubuntu_container
9de19b972df1   httpd            "httpd-foreground"        13 hours ago   Exited (0) 11 hours ago             webserver3
345ea0323add   nginx            "/docker-entrypoint.…"   23 hours ago   Exited (0) 23 hours ago             webserver2
bc81431c0254   nginx            "/docker-entrypoint.…"   23 hours ago   Exited (0) 23 hours ago             webserver1
PS C:\Users\joeac>

2.docker system prune -a を実行

PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all images without at least one container associated to them
  - all build cache

Are you sure you want to continue? [y/N]

3.削除結果の確認

  • イメージやコンテナが空になり、
  • 「Total reclaimed space: ○.○GB」と表示されて、どれくらいディスク容量が解放されたか確認できます。

注意点

  • 重要なデータが消えないか確認
    特に --volumes を使うとボリュームも削除されるので、データベースやログなど必要なデータが消える危険があります。
  • 強制削除 (-f) の使い方に注意
    プロンプトなしで削除されるため、本当に不要な環境でのみ使うのが安心です。

まとめ

docker system prune は、Docker環境を整理してディスク容量を取り戻すための便利なコマンドです。

  • デフォルトでは停止コンテナや未使用ネットワーク、宙ぶらりんイメージを削除
  • -a で未使用イメージも一掃、--volumes で未使用ボリュームも対象に
  • -f を使うと確認なしで削除されるので要注意

まさに「Dockerの断捨離」。使いこなせば、常にスッキリした環境で開発や運用ができます。