📘
Dockerに占領されたディスク領域を解放する方法
上の画像のようにDockerで好き勝手イメージやらコンテナやら作っていましたらCドライブの容量がパンパンになってしまいました…。
原因であるDockerのイメージ等削除します。
docker system prune
docker volume prune
docker image prune -a
docker builder prune
など。
またDockerのディスク使用状況については下記コマンドで見れます。
docker system df
上のコマンドでDockerの未使用イメージなどが削除されたことを確認しましたが、結果は冒頭の画像のままでした。
原因
完全に上記記事に当てはまりました。WSL2は一度確保したディスクをホストに返さないらしく、WSL2上で動かしているDockerも返してくれていないわけでした。
上記記事にあるHyper-Vを使う方法はHyper-Vが入っていなかったため不可。
またWSL2バックエンドを作り直す方法も少し抵抗があり避けました。
解決方法
自分は上記記事Answerにあった方法を採用しました。diskpartを使う方法です。
wsl --shutdown
diskpart
# open window Diskpart
select vdisk file="C:\WSL-Distros\…\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
上記コマンドはPowerShell上で実行します。
(またPowerShellは管理者権限で実行しておきます)
fileに指定するpathに関しては基本下記になるかと。
C:\Users\ユーザー名\AppData\Local\Docker\wsl\data\ext4.vhdx
以上でディスク領域の解放が完了します。
(100GB以上Dockerで使っていたのか自分……)
Discussion