欢迎光临
我们一直在努力

解决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 占用磁盘空间的有效方法。

    赞(0)
    未经允许不得转载:171主机测评 » 解决docker_data.vhdx占用系统盘过大的问题
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址