Breathnote
WSL2に載せたDockerが、仮想ディスクを自動で解放してくれないので、手動で最適化する

WSL2に載せたDockerが、仮想ディスクを自動で解放してくれないので、手動で最適化する

定期的に最適化するので、自分用にまとめておきます。

Dockerに限らず、Linuxディストリビューション等の最適化も可能ですが、まとめて最適化したいときは、WSL2 Compacterというスクリプトを利用したほうが良いでしょう。

Windows 10 Pro

PowerShell
# WSLを停止
wsl --shutdown

# 仮想ディスクイメージファイルが存在するディレクトリに移動
cd C:\Users\admin\AppData\Local\Docker\wsl\data

# 最適化
Optimize-VHD -Path .\ext4.vhdx

Windows 10 Home

PowerShell
# WSLを停止
wsl --shutdown

# diskpartを起動
diskpart

# 仮想ディスクイメージファイルを指定
DISKPART> Select vdisk file="C:\Users\admin\AppData\Local\Docker\wsl\data\ext4.vhdx"

# 読み取り限定でアタッチしないと最適化できない
DISKPART> attach vdisk readonly

# 最適化
DISKPART> compact vdisk

# 終了
DISKPART> detach vdisk
DISKPART> exit