タイトル通りですが、Docker Desktopが docker system prune等してもディスクを解放してくれないので調べたところ、WSL2が一度確保したディスク領域をホストに返さないのが原因との事

参考: WSL2 Docker が PC のディスクを圧迫する - Qiita

Optimize-VHDが無い場合

参考リンク先には、下記の通り Optimize-VHDコマンドを利用した解決方法が記載されています

1
> Optimize-VHD -Path [ext4.vhdxのPATH] -Mode full

しかし、Hyper-Vが無効だったりWindows Pro版じゃなかったりすると Optimize-vhdは使えません

かわりに diskpartを使用して、vhdxの最適化を行う手順です

手順(diskpart版)

  • 先にDocker Desktopは終了しておきます
  • Windows TerminalとかPowershellを起動する
  • 以下の通り作業する
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// WSLを止める
> wsl --shutdown

// diskpartを起動する(diskpartのウィンドウが開きます)
> diskpart

// 対象のvhdxファイルを指定(PATHは各自確認して下さい)
DISKPART> select vdisk file="C:\Users\[ユーザ名]\AppData\Local\Docker\wsl\data\ext4.vhdx"
DISKPART> attach vdisk readonly

// 最適化する
DISKPART> compact vdisk

// 終了
DISKPART> detach vdisk
DISKPART> exit