docker_data.vhdx占用系统盘过大的问题解决办法
作者:南马
发现问题
服务器的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 占用磁盘空间的有效方法。
到此这篇关于docker_data.vhdx占用系统盘过大的问题解决办法的文章就介绍到这了,更多相关docker_data.vhdx占用系统盘过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- Docker中容器数据卷(Data Volume)和数据管理详解
- 解决Docker安装错误failure:repodata/repomd.xml from docker-ce-stable
- Docker启动Nacos报错:No DataSource set问题及解决
- 深入理解 Docker 数据卷(Data Volume)
- 如何使用Docker恢复Mysql8备份的Data数据
- Docker 修改存储位置的步骤(data-root 迁移完整指南)
- docker部署datax全过程
- docker启动anything llm报unable to open database file: ../storage/anythingllm.db问题及解决
- Docker 部署Datart BI工具完整指南(PostgreSQL 持久化存储)
