docker_data.vhdx占用系统盘过大的问题解决办法

 更新时间:2026年04月30日 10:26:29   作者:南马  
docker_data.vhdx文件是docker用于存储容器,镜像和卷数据的虚拟硬盘文件,直接复制或迁移可能导致数据不一致或损坏,这篇文章主要介绍了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 中错误地使用了 cleandelete 命令,将导致 Docker 所有镜像和容器数据永久丢失请务必不要输入这些命令
  • 效果不一:压缩的效果取决于你之前删除了多少数据。如果虚拟磁盘内部没有多少空闲空间,压缩后的大小变化不会很明显。

总结建议:

只要严格按照步骤操作,特别是确保以管理员身份运行并先关闭 WSL2,这个操作是安全的。它是清理 Docker 占用磁盘空间的有效方法。

到此这篇关于docker_data.vhdx占用系统盘过大的问题解决办法的文章就介绍到这了,更多相关docker_data.vhdx占用系统盘过大内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker安装运行apache2服务器做图片服务器的方法

    Docker安装运行apache2服务器做图片服务器的方法

    这篇文章主要介绍了Docker安装运行apache2服务器做图片服务器的方法,需要的朋友可以参考下
    2017-06-06
  • docker将镜像打包为.tar包实现方法

    docker将镜像打包为.tar包实现方法

    使用tar包格式进行压缩,方便在不同的docker主机之间进行迁移和备份,下面这篇文章主要给大家介绍了关于docker将镜像打包为.tar包的实现方法,需要的朋友可以参考下
    2024-07-07
  • Docker运行模式之-d和-it的区别与选择详细对比

    Docker运行模式之-d和-it的区别与选择详细对比

    这篇文章主要介绍了Docker运行模式之-d和-it的区别与选择详细对比的相关资料,Docker中-d用于后台运行服务,不阻塞终端;-it提供交互终端,支持用户操作,需要的朋友可以参考下
    2025-05-05
  • docker push镜像到私有仓库的方式

    docker push镜像到私有仓库的方式

    这篇文章主要介绍了docker push镜像到私有仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • docker实现导出、导入和数据搬迁

    docker实现导出、导入和数据搬迁

    本篇文章主要介绍了docker实现导出、导入和数据搬迁,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • Docker命令让普通用户能够执行的实现

    Docker命令让普通用户能够执行的实现

    这篇文章主要介绍了Docker命令让普通用户能够执行的实现操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker使用root用户进入容器的几种方法小结

    Docker使用root用户进入容器的几种方法小结

    很多时候,拉取运行的容器,进入时,是非root账户,也不知道当前账户的用户密码,甚至无账户,但在使用docker时,有时候需要以root用户权限进入容器进行操作,所以本文介绍了Docker使用root用户进入容器的几种方法,需要的朋友可以参考下
    2025-09-09
  • Docker部署可视化管理面板Dpanel

    Docker部署可视化管理面板Dpanel

    本文主要介绍了Docker部署可视化管理面板Dpanel,通过可视化界面简化Docker管理,提升运维效率,下面就来介绍一下,感兴趣的可以了解一下
    2025-07-07
  • 教你如何通过 SSH 连接到 Docker 容器

    教你如何通过 SSH 连接到 Docker 容器

    如何通过 SSH 连接到正在运行的容器,以及为什么在这样做之前应该三思而后行,对如何通过SSH连接到Docker容器相关知识感兴趣的朋友跟随小编一起看看吧
    2022-01-01
  • Docker 下载镜像慢的问题解决办法

    Docker 下载镜像慢的问题解决办法

    这篇文章主要介绍了Docker 下载镜像慢的问题解决办法的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论