在 Windows10 中使用 Docker Desktop 时,有一个问题就是磁盘占用一直增长,即使删除镜像但还是占用着磁盘空间。这是因为因为 windows 中的 docker desktop 使用虚拟磁盘(VHDX)来存储文件系统。Windows 中,docker 运行在 WSL2 上,而 WSL2 使用虚拟磁盘 (VHDX) 来存储文件系统,VHDX 并不会自动。

这意味着您删除了一些镜像后,降低了 Docker 所需要空间到 20G,而虚拟磁盘仍然占用 100GB 的情况。这时我们可以通过 diskpart 命令手工对虚拟磁盘进行收缩。

压缩前:

  1. 确保 WSL2 没有运行

检查它是否正在运行:wsl —list —verbose

PS C:\WINDOWS\system32> wsl —list —verbose
NAME STATE VERSION

  • docker-desktop-data Stopped 2
    docker-desktop Stopped 2

如果在运行可以通过以下命令进行停止。
wsl —terminate docker-desktop
wsl —terminate docker-desktop-data

  1. 启动 diskpart 收缩磁盘
    启动 diskpart
    PS C:\WINDOWS\system32> diskpart

Microsoft DiskPart 版本 10.0.19041.964

Copyright (C) Microsoft Corporation.
在计算机上: DESKTOP-2MQJC0A

指定文件
DISKPART> select vdisk file=“C:\Users\Admin\AppData\Local\Docker\wsl\data\ext4.vhdx”

DiskPart 已成功选择虚拟磁盘文件。

压缩
DISKPART> compact vdisk

100 百分比已完成

DiskPart 已成功压缩虚拟磁盘文件。

完成
DISKPART> detach vdisk

虚拟磁盘已经分离。

DISKPART> exit

退出 DiskPart…

对比发现占用磁盘空间已经缩减。