はじめに
Docker を長期間利用していると、気づけば CドライブやWSLの領域が数十GB〜数百GB に膨れ上がっていることがあります。開発環境の動作に問題はなくても、ストレージを圧迫するのは困りものです。
本記事では、Docker の容量が増えていく代表的な原因と、その解決方法・予防策をまとめます。
容量が増える原因
1. 古いイメージやコンテナの残骸
docker pull を繰り返すたびに新しいイメージが追加され、使わなくなった古いイメージは削除されずに残ります。また、停止済みコンテナもディスクを占有します。
2. ボリュームとビルドキャッシュ
データを保存する ボリューム や、docker build で生成される キャッシュ は自動では消えません。
DB のテストデータやキャッシュが肥大化するケースも多いです。
3. WSL2 の仮想ディスク (ext4.vhdx)
Windows + Docker Desktop 環境では、WSL2 上に「docker-desktop-data」というディストリビューションが存在し、ここに全データが保存されます。
特徴として、削除しても物理ファイルのサイズは自動的に縮小されないため、肥大化し続けます。
対策方法
① 不要なリソースを削除
docker system df # ディスク使用量を確認
docker system prune -a # 使っていないイメージ・コンテナ削除
docker volume prune # 使っていないボリューム削除
docker builder prune # ビルドキャッシュ削除
※ -a オプションは必要なものまで消さないよう注意。
② 仮想ディスクをコンパクト化
削除後も ext4.vhdx は縮みません。
Windows では diskpart で物理サイズを圧縮可能です。
wsl --shutdown
diskpart
select vdisk file="C:\Users\<ユーザー名>\AppData\Local\Docker\wsl\main\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
これで実際に Cドライブの空き容量が回復します。
③ 保存先を別ドライブに移動
Cドライブを圧迫したくない場合、WSL ディストリを Dドライブなどへ移せます。
wsl --export docker-desktop-data D:\wsl\docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data D:\wsl\docker-desktop-data D:\wsl\docker-desktop-data.tar --version 2
予防策
- 定期的に
docker system pruneを実行する - プロジェクトごとに不要になったイメージ・ボリュームを整理
- CI/CD 環境ではキャッシュ肥大化を監視
- ローカル開発環境では半年に一度は
compact vdiskを実行
まとめ
- Docker の容量肥大は イメージ残骸+ボリューム+WSLのVHDX が主因。
- 削除(prune)だけでは不十分で、compact が必要。
- 長期的には別ドライブ移行も有効。
Docker を快適に使い続けるには、定期的なメンテナンスが欠かせません。ぜひこの記事を参考に、開発環境をスリムに保ってみてください。