このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】docker system prune コマンド

「docker system prune
」コマンドは、Docker システム内の未使用オブジェクトを削除するために使用されます。このコマンドは、未使用のイメージ、コンテナ、ネットワークを一括でクリーンアップするショートカットとして機能し、ディスクスペースを解放するのに役立ちます。ただし、デフォルトではボリュームは削除されません。
主な機能
未使用のイメージの削除
「 docker system prune
」は、デフォルトで宙ぶらりんイメージ(タグを持たず、他のコンテナからも参照されないイメージ)のみを削除します。「-a
」 オプションを使用すると、少なくとも一つのコンテナに関連付けられていないすべてのイメージを削除します。
停止したコンテナの削除
実行中でないすべてのコンテナが削除対象となります。
未使用のネットワークの削除
少なくとも一つのコンテナに使用されていないすべてのネットワークが削除されます。
未使用のボリュームの削除
「 --volumes
」 オプションを付けることで、未使用のボリュームも削除できます。ただし、このオプションを使用する際は、重要なデータが失われることがないよう注意が必要です。
使用方法
基本的な使用方法は以下の通りです。
docker system prune [オプション]
-a
,--all
: タグのないイメージや参照されていないイメージを含む、未使用のすべてのイメージを削除します。--filter
: 特定の条件に一致するオブジェクトのみを削除するためのフィルタを指定します。例えば、「--filter "until=24h"
」 は、24時間以上前に作成されたオブジェクトのみを削除します3。-f
,--force
: 削除の確認プロンプトを表示せずに、コマンドを強制的に実行します。--volumes
: 未使用のボリュームも削除します4。
注意点
「docker system prune
」コマンドを使用する際は、削除されるオブジェクトに重要なデータが含まれていないかを事前に確認することが重要です。特に、「-a
」 オプションや 「--volumes
」オプションを使用する場合は、より慎重に操作する必要があります。また、「-f
」 オプションを使用すると、確認なしに削除が実行されるため、使用する際は注意が必要です。
docker system prune コマンドを試してみる
「docker system prune」コマンドの概要が理解できたところで、「docker system prune」コマンドを実際に実行してみます。
コマンドを実行する前に、現在のイメージとコンテナの状況を確認しておきます。
「docker image ls」コマンド実行します。
イメージが6つ存在します。
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
quay.io/centos/centos stream9 427fedeb26a1 2 days ago 156MB
ubuntu 22.04 ca2b0f26964c 12 days ago 77.9MB
nginx latest e4720093a3c1 3 weeks ago 187MB
httpd latest 2776f4da9d55 7 weeks ago 167MB
ubuntu 18.04 f9a80a55f492 9 months ago 63.2MB
centos centos7 eeb6ee3f44bd 2 years ago 204MB
「docker container ls -a」コマンド実行します。
停止中のコンテナが7つ存在ます。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cfc482c142df quay.io/centos/centos:stream9 "/bin/bash" 29 hours ago Exited (0) 29 hours ago stream9
69ecfc809456 centos:centos7 "/bin/bash" 32 hours ago Exited (0) 31 hours ago centos7
8a296d609049 ubuntu:18.04 "/bin/bash" 44 hours ago Exited (0) 44 hours ago ubuntu18.04
4f2549619dda ubuntu:22.04 "/bin/bash" 46 hours ago Exited (0) 45 hours ago ubuntu22.04
9dcede2f3b1f httpd "httpd-foreground" 2 days ago Exited (0) 2 days ago webserver3
facb8262f20f nginx "/docker-entrypoint.…" 3 days ago Exited (0) 2 days ago webserver2
18cbe71fe4a8 nginx "/docker-entrypoint.…" 3 days ago Exited (0) 3 days ago webserver1
「docker system prune」コマンドを実行する。
「docker system prune -a」コマンドを実行します。
「docker system prune」コマンドには「-a」オプションを指定します。
「-a」オプションを指定すると以下のオブジェクトが削除されます。
- 停止したすべてのコンテナ
- 少なくとも 1 つのコンテナによって使用されていないすべてのネットワーク
- 少なくとも 1 つのコンテナが関連付けられていないすべてのイメージ
- すべてのビルドキャッシュ
「Are you sure you want to continue? [y/N] 」と問われますので、「y」を入力します。
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] y # yと入力します。
Deleted Containers:
cfc482c142df6e919fb034b519e500cad886ca797767745431cf9fd36d69e254
(省略)
18cbe71fe4a8109e509f585cb7291bb6bf3d72f9ae0390de6b328c78888efacf
Deleted Networks:
flask_default
Deleted Images:
untagged: nginx:latest
untagged: nginx@sha256:c26ae7472d624ba1fafd296e73cecc4f93f853088e6a9c13c0d52f6ca5865107
deleted: sha256:e4720093a3c1381245b53a5a51b417963b3c4472d3f47fc301930a4f3b17666a
(省略)
untagged: ubuntu:22.04
untagged: ubuntu@sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
deleted: sha256:ca2b0f26964cf2e80ba3e084d5983dab293fdb87485dc6445f3f7bbfc89d7459
deleted: sha256:5498e8c22f6996f25ef193ee58617d5b37e2a96decf22e72de13c3b34e147591
Deleted build cache objects:
imins0f8pi1fsfq0zrt1rxk8f
(省略)
s6rtvi3pmhs48w6ulger7r069
9z2wbslxq5y4pfrn3zl8i859b
Total reclaimed space: 1.219GB
「docker image ls」コマンド実行します。
イメージが6つ存在します。
PS C:\Users\joeac> docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
「docker container ls -a」コマンド実行します。
停止中のコンテナが7つ存在ます。
PS C:\Users\joeac> docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
「-a
」 オプションを使用する場合は、慎重に操作する必要があります。また、「-f
」 オプションを使用すると、確認なしに削除が実行されるため、使用する際は注意してください。