4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Dockerの容量がどんどん増えるのはなぜ?原因と対策まとめ

4
Posted at

はじめに

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

予防策

  1. 定期的に docker system prune を実行する
  2. プロジェクトごとに不要になったイメージ・ボリュームを整理
  3. CI/CD 環境ではキャッシュ肥大化を監視
  4. ローカル開発環境では半年に一度は compact vdisk を実行

まとめ

  • Docker の容量肥大は イメージ残骸+ボリューム+WSLのVHDX が主因。
  • 削除(prune)だけでは不十分で、compact が必要。
  • 長期的には別ドライブ移行も有効。

Docker を快適に使い続けるには、定期的なメンテナンスが欠かせません。ぜひこの記事を参考に、開発環境をスリムに保ってみてください。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?