盆暗の学習記録

データサイエンス ,エンジニアリング,ビジネスについて日々学んだことの備忘録としていく予定です。初心者であり独学なので内容には誤りが含まれる可能性が大いにあります。

【WSL2】Dockerが無駄に確保したストレージ領域を解放する

tl; dr

  • Docker Desktopの「Troubleshoot」ページにある「Clean / Purge data」で開放できる

問題

WSL2バックエンドのDockerを使っていたところ、ストレージがいっぱいになってしまいました。

「とりあえず過去にbuildしたimageを消すか」と思って

docker system prune -a

として消して100GBくらい削除したのですが、それでもストレージは解放されず100%のまま・・・。

不思議に思いつつ設定のResourceの部分を見てみると、AppData\Local\Docker\wslにデータを置いている様子。

より具体的には

C:\Users\ユーザー名\AppData\Local\Docker\wsl\data\ext4.vhdx

というファイルがDockerのファイル置き場になっており、ここにimageなどの情報を貯めているようです。

このext4.vhdxファイルの容量を確認すると、なんと130GBもあるという。

同様の問題を抱えていた人のブログ記事などを見てみると「image等を消しても確保したストレージ領域を解放してくれない」などと書かれていました。そのためpruneしてもこのファイルの容量は大きいままのようです。

対処法

ほかのブログ記事をみると、ディスクのパーティションをいじったりするいろいろなコマンドが並んでいたりしました。

同じコマンドをやろうとしたもののエラーがでて途中で止まっちゃったりしたので、別の方法を求めてDocker Desktopのメニューを見ていたところ、次の方法で簡単に直せました

※imageやvolumeなどのデータを消しても構わない場合のみ実行してください

1. タスクトレイのアイコンを右クリックして「Troubleshoot」をクリックする

2. 「Clean / Purge data」をクリック

3. 「WSL」をチェックして「Delete」

削除が終わると「Purge completed」というメッセージが出ます

130GBあったext4.vhdxも76MBになり、ストレージもだいぶ余裕ができました。