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

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」 オプションを使用すると、確認なしに削除が実行されるため、使用する際は注意してください。