LoginSignup
1
0

WSL2 docker system prune をしても Ubuntu の容量が減ってくれない時の対処

Last updated at Posted at 2023-12-18

Windows11 Proで、Docker Desktop は使わず、Ubuntu-20.04 上に docker を入れている。

  • docker image prune
  • docker volume prune
  • docker continer prune
  • docker system prune

上記諸々して、 docker system df をすると、減ってくれているはずが、
WSLの容量は引き続きパンパンと出る。

Docker Desktop だと、下記のOptimize-VHDの方法があるようだが、
apt-get で入れた Docker では使えなさそう。

DockerやWSLをすべて破壊するのも嫌過ぎる…。
という状況で、調べた結果、DiskPart 使った方法で無事うまく容量を空けることができた。

手順

WSLのシャットダウン

管理者権限でPowerShellを開く。
まずは、

PS > wsl --shutdown

で、WSLをシャットダウンする。

該当の .vsdx ファイルを探す

PS > cd $HOME\AppData\Local\Packages\
PS > ls

Packages の配下に Canonical から始まる Ubuntu を含むディレクトリがあることを確認する
とりあえず Ca 補完すればOK

PS > cd CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc

ここの配下に、 LocalState というディレクトリがあり、その中に、 .vhdx ファイルがあることを確認。

PS > cd LocalState
PS > ls

Pathをコピーする

VHDファイルの物理サイズを減らす

Path をコピーしたら、 DISKPART を起動

PS > diskpart

起動したら、 select -> attach -> compact -> detach の順に行う。

DISKPART> select vdisk file="コピーした.vhdxのパス"

DiskPart により、仮想ディスク ファイルが選択されました。

DISKPART> attach vdisk readonly

  100% 完了しました。
DiskPart により、仮想ディスク ファイルがアタッチされました。

DISKPART> compact vdisk
DiskPart により、仮想ディスク ファイルは正常に圧縮されました。

DISKPART> detach vdisk
DiskPart により、仮想ディスク ファイルがデタッチされました。

DISKPART> exit

容量が空いたことを確認

上記実行で、Cドライブの容量が空いたことを確認できた。
Activeなdocker ボリュームやイメージ等は吹っ飛んでいないことも確認できた。

補足

インストールされているアプリから確認すると、775GBもUbutu-20.04が使っている状態だったので、compact vdisk は30分ぐらい?待った。ひぃ。

docker system prune とかで、dockerで使われたものの掃除自体はできているらしいが、
拡張されたものは、確保されたままになっちゃうということっぽい。。

Cドライブがパンパンになってからこれをしたけど、パンパンになるより前に、ある程度不要なイメージ、builder cache とかは適宜消してあげておく方がよいという感じっぽい。

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0