問題
Windows10上にWSL + Dockerを利用して開発環境を作って頻繁にdocker buildしてimageを削除しました。
3ヶ月後に、C diskの容量がいっぱいなってしまったです。windows upgradeなどは全然対応できないです。
docker host osに全てのdocker imageを削除しても容量を改善できません。
- 前提条件
- OS windows 10 pro (22H1)
- WSL2: Ubuntu-20.04
分析
- サイズが大きいファイルを見つかりました
- C:\Users\username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
- 135GBぐらい
-
https://lazesoftware.com/ja/blog/230225/
- DockerでWSL2を使用しているとディスク使用量が戻らない原因
- 仮想ディスクがOSが自動的に拡張しているが、不要になった部分が自動的に削除されないそうです
解決
- docker imagesを削除して、ビルドキャッシュも削除する
- docker system df
- docker builder prune
- 仮想ディスクを最適化するために、ツールをインストールする
- コントロールパネル -> プログラム -> windowsの機能の有効化または無効化
- Hyper-V(Hyper-V プラットフォームとHyper-V 管理ツール)を有効にする
- windows再起動
- 最適化実行(PowerShell管理者権限)
- Optimize-VHD -Path C:\Users\username\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc\LocalState\ext4.vhdx
感想
- WSL2 + dockerで仮想ディスク容量が自動的に削除されないで、初めての方に対してとても面倒です。
- 原因と対策がわかれば、docker buildの頻度より仮想ディスクの容量がいっぱいなってしまうことがあるので、何ヶ月に仮想ディスク最適化を一回実行して特に面倒なことではない