「df -hでルートパーティションの空き容量を確認したら、Dockerが何十GBも使っていた」という経験はありませんか。Dockerを使い続けると、不要なイメージやコンテナがどんどん溜まっていきます。
結論から言うと、コマンド数本で数十GBを即座に回収できます。目的別にdocker image prune・docker container prune・docker buildx pruneを使い分けるのが基本で、まとめて削除したいならdocker system prune一発です。
本記事では、Docker Desktop 20.10.12 の環境でdocker system dfを実測し、各pruneコマンドの前後で実際にどれだけディスクが回収されたかを確認しました。Ubuntu 24.04 にdocker-ceをインストールした環境でも同じコマンドが使えます。
この記事のポイント
- まず
docker system dfで現状のディスク使用量を把握する - dangling(タグなし)イメージは
docker image pruneで安全に削除できる - 停止中コンテナは
docker container pruneでまとめて削除できる - ビルドキャッシュは
docker buildx pruneまたはdocker builder pruneで削除する docker system pruneを使うとイメージ・コンテナ・キャッシュを一括削除できる(ただし確認してから実行)- 実測では
docker image pruneで 9.1GB、ビルドキャッシュ削除で 13.9GB を回収できた
目次
- まず docker system df で現状を確認する
- docker image prune でイメージを削除する
- docker container prune でコンテナを削除する
- docker volume prune でボリュームを削除する
- docker buildx prune でビルドキャッシュを削除する
- docker system prune で一括削除する
- よくあるエラーと解決策
- まとめ
まず docker system df で現状を確認する
何を削除するか判断するために、最初にdocker system dfで現在の使用量を確認します。これはDockerが管理している全リソース(イメージ・コンテナ・ボリューム・ビルドキャッシュ)のディスク使用量を一覧表示するコマンドです。
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 283 26 18.28GB 16.49GB (90%)
Containers 43 6 2.566GB 6.33MB (0%)
Local Volumes 24 13 4.15GB 3.73MB (0%)
Build Cache 654 0 5.25GB 5.25GB
各列の見方は次のとおりです。
- TOTAL:Dockerが管理しているリソースの総数
- ACTIVE:現在使用中のリソース数
- SIZE:ディスク上の実際の使用量
- RECLAIMABLE:削除して回収できる容量(括弧内はSIZEに対する割合)
上の例では、イメージ283個のうち26個しか使われておらず、16.49GB(90%)が回収可能な状態です。これはDockerを使い込むとよくある状態です。詳細を見たい場合は-vオプションを付けます。
Images space usage:
REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
ubuntu 24.04 35a88802559d 3 weeks ago 101MB 0B 101MB 1
ubuntu 22.04 8a3cdc4d1ad3 5 weeks ago 69.6MB 0B 69.6MB 1
…
Containers space usage:
Local Volumes space usage:
Build cache usage: 5.25GB

docker imagesコマンドで全イメージを一覧表示すると、<none>とタグのないイメージ(dangling イメージ)が大量に並んでいる場合があります。これらはビルドのたびに生成される「ゴミ」で、削除しても影響はありません。

docker image prune でイメージを削除する
イメージの掃除にはdocker image pruneコマンドを使います。このコマンドはデフォルトでdangling イメージ(どのコンテナからも参照されていないタグなしイメージ)のみを削除します。使用中のイメージには触れないため、安全に実行できます。
手順1:dangling イメージを確認する
削除前に-f dangling=trueオプションで対象を確認します。
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> fb314d8733f0 3 months ago 220MB
<none> <none> 805d2a6c3f2a 3 months ago 575MB
<none> <none> cebfa080fa3e 3 months ago 575MB
<none> <none> 327d0c0530e7 3 months ago 575MB
<none> <none> 76267e3e94a1 3 months ago 575MB
… (合計 246 個の dangling イメージを確認)
手順2:docker image prune を実行する
Deleted Images:
deleted: sha256:191a2f6c6479cc965396db44c5c93b1d5d835d282e887027d5901f3730b93720
deleted: sha256:0fe909e7ecd9a5cb8a5fdcb7c9a96ab34a5917069647e2ae2f131ba5bbe28a9b
deleted: sha256:54743ff7e4a00d30c6506490a0eedc4a2256f9467cf101dcaea101fc332de092
… (246 個のレイヤー削除) …
Total reclaimed space: 9.102GB
--force(または-f)を付けると確認プロンプトなしで実行されます。本番環境では省略して確認してから実行するのもよいです。
実測では246個のdanglingイメージを削除し、9.102GBを回収できました(2026-06-13実測)。
使用中のイメージを含めて削除したい場合
docker image prune -aを使うと、dangling イメージに加えて「どのコンテナからも使われていない全イメージ」を削除できます- ただし、止まっているコンテナが参照しているイメージも削除対象になるため、注意が必要です
- 起動中のコンテナが使うイメージは削除されません

docker container prune でコンテナを削除する
docker container pruneは停止中のコンテナをまとめて削除するコマンドです。docker runで一時的に使ったコンテナや、エラーで止まったコンテナが溜まりがちです。
docker ps -aで確認するとステータスがExitedやCreatedのコンテナが削除対象です。
NAMES STATUS
cranky_saha Up 30 seconds
optimistic_jones Created
vigorous_perlman Created
ecstatic_gould Created
… (停止中コンテナが 37 個 …)
$ docker container prune –force
Deleted Containers:
1f9ca6dfc4b9a7968a2d5cc863fad0531e123ed10531c3c725d37bf2ca226539
65437d97eb7099011cc4c529ba4fc7055a2777e7af695921cef3f07c1c5d68ec
… (計 38 個のコンテナを削除) …
Total reclaimed space: 6.33MB
今回は38個の停止コンテナを削除し、6.33MBを回収しました。コンテナ自体のサイズは小さいことが多いですが、起動中コンテナへの参照が整理されるためスッキリします。
注意
起動中(Up)のコンテナはcontainer pruneでは削除されません。停止中のコンテナにデータが残っている場合は、コピーしてから削除してください。
docker volume prune でボリュームを削除する
Dockerボリュームはコンテナが削除されても自動的には消えません。データベースファイルやアプリのデータが入っていることも多いため、ボリューム削除は慎重に行う必要があります。
DRIVER VOLUME NAME
local 0cc35ccdae08898f0f1567da66e63e7b508639bf44a4575f270aa6e907ed33a3
local 4f199c7a62d4166d9110585447890003f07fcb94e1398829e7ad5f00e168c7f7
… (計 24 ボリューム / 4.15GB)
$ docker volume prune –force
Deleted Volumes:
0cc35ccdae08898f…
Total reclaimed space: 4.081GB
重要な注意
docker volume pruneはどのコンテナからも参照されていないボリュームを削除します。MySQLやPostgreSQLのデータが入ったボリュームが削除されると復元できません。実行前にdocker volume lsで確認し、バックアップを取ってから実行してください。
docker buildx prune でビルドキャッシュを削除する
Dockerfileをビルドするたびに中間レイヤーのキャッシュが蓄積されます。docker buildx pruneコマンドでビルドキャッシュをまとめて削除できます。
正直、ビルドキャッシュは見落とされがちなのですが、今回の実測では13.9GBものビルドキャッシュが溜まっていました。定期的に削除することをおすすめします。
Build Cache 654 0 13.9GB 13.9GB
$ docker buildx prune –force
ID RECLAIMABLE SIZE
iaw70cvf4t7n6r5xjz36gckm4 true 385.93kB
lkpmcod86ua3osvaz83pbcish true 140.31kB
… (654 個のキャッシュエントリを削除) …
Total reclaimed space: 13.9GB
docker builder prune との違い
- Ubuntu の
docker-ceではdocker builder pruneでも同様にビルドキャッシュを削除できます docker buildx pruneは BuildKit(拡張ビルド機能)用。Docker Desktop や最新の docker-ce では統合されています- どちらのコマンドも使えない場合は
docker system prune(次節)を使えばキャッシュも含めて削除できます
docker system prune で一括削除する
個別のpruneコマンドを一本ずつ実行するのが面倒な場合、docker system pruneコマンドでイメージ・停止コンテナ・ネットワーク・ビルドキャッシュを一括削除できます。

WARNING! This will remove:
– all stopped containers
– all networks not used by at least one container
– all dangling images
– all dangling build cache
Are you sure you want to continue? [y/N] y
Deleted Containers: …
Deleted Images: …
Total reclaimed space: 9.108GB
実行するとどのリソースが削除されるかの確認プロンプトが出ます。問題なければ y を入力します。
ボリュームも含めて削除したい場合は--volumesオプションを付けます。ただし、--volumesはデータベースのデータも消える可能性があります。必要なデータのバックアップを取ってから実行してください。
| コマンド | 削除対象 | 注意点 |
|---|---|---|
docker image prune |
dangling イメージ | 安全・低リスク |
docker image prune -a |
未使用イメージ全て | 停止コンテナ参照イメージも削除 |
docker container prune |
停止コンテナ | 安全(データは確認してから) |
docker volume prune |
未使用ボリューム | DBデータに注意・要バックアップ |
docker buildx prune |
ビルドキャッシュ | 安全・次回ビルドが遅くなる |
docker system prune |
イメージ+コンテナ+キャッシュ | ボリュームは別途 –volumes |

よくあるエラーと解決策
① permission denied — dockerコマンドが実行できない
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock
Ubuntuでdockerコマンドを使うには、dockerグループへの追加が必要です。
$ newgrp docker
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 37 4 9.182GB 8.188GB (89%)
② image is being used by stopped container — イメージが削除できない
Error response from daemon: conflict: unable to remove repository reference “ubuntu:22.04” (must force) – container xxxx is using its referenced image
停止中のコンテナが参照しているイメージは個別削除ができません。先にdocker container pruneでコンテナを削除してから、イメージを削除してください。
Deleted Containers: …
$ docker rmi ubuntu:22.04
Untagged: ubuntu:22.04
Deleted: sha256:8a3cdc4d1ad3…
③ no space left on device — ビルドやpullに失敗する
ディスクが満杯になってdocker pullやdocker buildが失敗する場合、まずdocker system dfで使用量を確認し、上記のpruneコマンドで空きを確保してください。Ubuntu の場合はdf -hでルートパーティションの残量も合わせて確認します。
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 49G 0.5G 99% /
$ docker system prune –force
Total reclaimed space: 9.1GB
$ df -h /
/dev/sda1 50G 39G 9.5G 80% /
まとめ
Dockerのディスク使用量は気づかないうちに膨らんでいます。定期的な掃除のポイントをまとめます。
- 最初に
docker system dfで使用量を把握する docker image pruneで dangling イメージを安全に削除する(今回の実測では 9.1GB 回収)docker container pruneで停止コンテナをまとめて削除するdocker buildx pruneでビルドキャッシュを削除する(今回の実測では 13.9GB 回収)- ボリュームは内容を確認してから
docker volume pruneで削除する - 一括削除は
docker system prune、ボリュームも含めるなら--volumesを付ける
Dockerを使い込んでVPSにデプロイしてみたい方は、ベンチマーク比較記事も参考にしてみてください。



コメント