服务器的Docker Desktop 的image dick文件docker_data.vhdx 默认是在C盘下C:\\Users\\Administrator\\AppData\\Local\\Docker\\wsl\\disk
今天发现500G的C盘几乎被占满了,一个docker_data.vhdx文件就占了270G!!
看了网上一些解决方案,有些复杂,什么需要wsl –shutdown啥,其实在的最新的decktop中操作很简单。目前版本是:Docker Desktop 4.49.0 (208700) is currently the newest version available.
设置setting中找到resources选项,就可以看到disk image location选项,可以将该选项直接browse到D盘(或其他非系统盘),在D盘会自动创建DockerDesktopWSL目录,然后按下出现的Apply & restart按钮

这时候会提示要不要Move disk image,点击Yes,move it。稍等片刻,巨吃C盘空间的docker_data.vhdx就会移动到D:\\DockerDesktopWSL下,同时释放C盘空间

解决方式就这么简单:)
使用 Windows 的 diskpart 工具对 Docker 的 .vhdx 文件执行压缩操作,是官方支持的、相对安全的维护手段,但任何涉及系统底层文件的操作都应谨慎。
以下是具体的操作步骤和风险提示。
🛠️ 具体操作步骤
此操作的核心是先完全关闭 WSL2 和 Docker,释放对虚拟磁盘文件的占用,然后使用 diskpart 工具对其进行压缩。
关闭 Docker Desktop
- 在系统托盘中右键点击 Docker 图标,选择 Quit Docker Desktop。
关闭 WSL2 实例
- 以管理员身份打开 PowerShell 或命令提示符 (CMD)。
- 输入以下命令并回车,这会终止所有正在运行的 WSL2 实例:
wsl –shutdown
执行 diskpart 压缩
- 在同一个管理员命令行窗口中,输入 diskpart 并回车,启动 Diskpart 工具。
- 依次输入并执行以下命令(建议逐行复制粘贴执行):
注意:默认路径为 %LOCALAPPDATA%\\Docker\\wsl\\data\\ext4.vhdx。如果之前迁移过位置,请将路径替换为你的实际路径。
select vdisk file="%LOCALAPPDATA%\\Docker\\wsl\\data\\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit - 命令解释:
- select vdisk: 选择要操作的虚拟磁盘文件。
- attach vdisk readonly: 以只读模式挂载磁盘,这是压缩的前提。
- compact vdisk: 执行压缩,回收未使用的物理空间。
- detach vdisk: 卸载磁盘。
- exit: 退出工具。
完成
- 操作成功后,重新启动 Docker Desktop。此时查看 .vhdx 文件的大小,应该已经显著减小。
⚠️ 操作风险提示
总体来说,这个操作是低风险的,但需注意以下几点:
- 必须以管理员身份运行:diskpart 操作需要管理员权限,否则会报错“拒绝访问”。
- 文件占用冲突:如果 Docker 或 WSL2 没有完全关闭(例如后台进程仍在运行),attach vdisk 步骤会失败,提示“另一个程序正在使用此文件”。此时必须确保第一步已执行到位,否则强行操作可能导致数据损坏。务必先执行 wsl –shutdown。
- 数据丢失风险:此操作本身不会删除容器内的数据,因为它只是回收虚拟磁盘中“已标记为删除”的空间。但是,任何磁盘维护操作都存在理论上的风险。
- 高风险操作:如果在 diskpart 中错误地使用了 clean 或 delete 命令,将导致 Docker 所有镜像和容器数据永久丢失。请务必不要输入这些命令。
- 效果不一:压缩的效果取决于你之前删除了多少数据。如果虚拟磁盘内部没有多少空闲空间,压缩后的大小变化不会很明显。
总结建议:
只要严格按照步骤操作,特别是确保以管理员身份运行并先关闭 WSL2,这个操作是安全的。它是清理 Docker 占用磁盘空间的有效方法。



