WSL 上の Ubuntu で docker を使っていたのですが、ストレージの空き容量が少なくなってきたので docker イメージを削除しても空き容量が変化しませんでした。
調べてみたところ、どうやら仮想ディスクの最適化まで行わないとディスクスペースは解放されないようです。
- https://01futabato10.hateblo.jp/entry/2022/12/02/095031
- https://qiita.com/siruku6/items/c91a40d460095013540d
ただ、私の PC はストレージ容量が少なく、頻繁に Docker イメージを消して容量を確保しているため、都度コマンドを打つのは面倒ということで、スクリプト化しました。
コマンドとしては、diskpart を使う方法と、Optimize-VHD を使う方法があるみたいですが、Optimize-VHD は Hyper-V を有効化する必要があり、Windows Home では使えないということで、今回は diskpart を使うことにしました。
diskpart でスクリプトを実行する方法は以下に記載されています。
サンプル
まずは diskpart で実行するスクリプトを作成します(ここでは sample.txt
としました)。
select vdisk file="%USERPROFILE%\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
file
のパスは環境によって異なると思うので、以下を参考に調べてください。
そのうえで、以下のバッチファイルを作成します。
wsl --shutdown
diskpart /s sample.txt
あとはこのバッチファイルを実行するだけで OK です。