パソコンの空き容量を増やすには、どうしたらいいでしょうか

Docker Desktopの質問があります。Win10です。
メモリやコア数の設定は、lin5さんの質問でわかりました。

ディスク容量の制限はできますか?
使い終わったコンテナやイメージを消しているつもりですが、
パソコンの容量がぜんぜん減らない気がします。
Dockerには確認する場所もなさそうですが、調べるところはありますか。
御存じの方はご教授いただけますでしょうか。

「いいね!」 1

@yanagi さん、こんばんは!
良い質問ですね!

私も気になっていたので、改めて調べ直してみました。
Docker Desktop for Windows で WSL2 を使っていて、かつ、今日現在リリースされている Docker Desktop version 4.8.2(79419) を前提に、以下説明します。

Docker Desktop ではディスク容量の制限は できません 。Docker Desktop で容量が必要になれば、必要な分だけ自動的に拡張される仕組みです。

勝手に増えるのは便利なのですが、 自動的に容量は減りません 。極端な話、一度 WSL で 50GB を確保してしまうと、Docker 側でイメージやボリュームを消したとしても、50GB は PC 上で確保し続けます。

どうしたらよいかというと

  1. 使っていないイメージやボリュームを削除
  2. WSLの停止
  3. Optimize-VHD というツールで、容量を最適化

という流れになります。

具体的に見ていきます。

まず、 Docker Desktop で不要なコンテナやイメージを停止・削除します。

Powershell を「管理者」として起動し、 docker system df コマンドを実行すると、コンテナやイメージ、ボリュームなどが使っている容量が出ます。

PS C:\WINDOWS\system32> docker system prune
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          12        7         2.371GB   906.9MB (38%)
Containers      11        2         37.27MB   37.27MB (99%)
Local Volumes   5         3         717.4MB   219.7MB (30%)
Build Cache     43        0         19B       19B

この状態で、次のコマンドを実行すると、現在使っていない(停止中の)コンテナ、ボリューム、ネットワークの情報、構築時のキャッシュを消せます。

要は、使っていないものを消します。ただし、あとから使う予定で、停止しているコンテナも削除してしまうため、よくわからない場合は、使わないほうが良いかもしれません。調べてから実行をお願いします :pray:

改めて、実行するコマンドはこちら。

docker system prune -f
docker builder prune -f

その後、もう一度 docker system df を使って容量を確認しますと、私の環境では、こんな感じで 1GB ほどイメージが消えました。

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          2         2         1.055GB   0B (0%)
Containers      2         2         6B        0B (0%)
Local Volumes   5         2         717.4MB   439.3MB (61%)
Build Cache     1         0         0B        0B

さて、次に問題なのが、 Dokcer 上からは消えたように見えても、WSL のディスク容量が増えたまま という点です。

それが、まさにこの現象です。

Docker Desktop が使っている WSL 用のファイルは、C:\Users\ユーザ名\AppData\Local\Docker\Wsl\data\ext4.vhdx です。私の環境では、こんな感じです。約17GBあります。

このファイルを小さくするコマンドがあります。
先ほどの管理者として実行している PowerShell 上で、次のコマンドを実行します。

wsl --shutdown
Optimize-VHD -Path "$($env:LOCALAPPDATA)\Docker\wsl\data\ext4.vhdx" -Mode Full

※ Docker Desktop を起動中の場合、 wsl --shutdown で警告が出ますが、そのまま WSL は停止しておきます。

コマンドを実行すると、このように最適化処理が始まります。

そして、特にエラーもなく

PS C:\WINDOWS\system32>

このような表示に戻ってきたら、大丈夫です。

先ほどのファイル容量を見ますと、

このように 15.6 GB 近くまで、わずかですが容量を圧縮できました。
是非おためしください :grin:

参考にした記事:

「いいね!」 2

書いてくださった方法で減らせました。
ありがとうございました。

「いいね!」 2

便利そう。ためしてみようっと

「いいね!」 2