Docker VHDX磁盘 压缩脚本产品系统Vibe Coding

我要开发同款
Gzx主攻AIagent项目2026年07月20日
15阅读

技术信息

语言技术
Docker
系统类型
Windows
行业分类
脚本插件开发工具
演示地址
暂无

作品详情

行业场景

1、立项原因:Docker Desktop 基于 WSL2 的虚拟磁盘文件 docker_data.vhdx 采用动态扩展机制,长期使用后删除镜像、容器等操作不会自动回收已占用空间,导致磁盘文件虚胖(如实际数据仅 3GB 却占用 20GB),造成磁盘空间浪费。本脚本旨在自动化回收“死空间”,解决手动压缩流程繁琐、易出错的问题,释放被无效占用的存储资源。

2、行业场景:适用于 Windows 平台上频繁使用 Docker 进行开发测试的工程师、运维人员,以及 CI/CD 构建机等需要定期清理磁盘的环境。尤其适合 SSD 容量有限的笔记本或云桌面,帮助用户在不重装 Docker 的前提下快速回收空间。

功能介绍

1、功能模块:
脚本为单一 PowerShell 文件,内部划分为五个逻辑模块:

**路径交互模块**:提供默认路径(%LOCALAPPDATA%\Docker\wsl\disk\docker_data.vhdx)与手动输入自定义路径的交互选择。

**前置检查模块**:检测管理员权限、VHDX 文件存在性,确保运行环境合法。

**WSL 操作模块**:执行 wsl --shutdown 关闭实例,挂载/卸载 VHDX 为裸设备。

**填零回收模块**:在 WSL 内通过 dd 命令对数据分区空闲空间写零,触发 VHDX 的收缩标记。

**压缩执行模块**:调用 diskpart 的 compact vdisk 指令完成物理压缩,并显示压缩后大小。

2、核心功能
一键完成从关闭 WSL、挂载磁盘、填零、压缩到卸载的全流程自动化,用户仅需以管理员身份运行,按提示选择路径即可,无需记忆复杂命令。

项目实现

1、技术栈
基于 PowerShell 5.0+ 编写,依赖 Windows 内置工具(diskpart、wsl.exe)以及 WSL 发行版中的 dd 命令(BusyBox 提供)。无需额外安装第三方软件。

2、架构
采用线性顺序执行 + 交互式输入,包含异常退出保护(文件不存在、权限不足时提前终止)。

3、实现亮点

通过磁盘大小自动定位数据分区,避免用户手动指定设备名。
智能处理 Windows/Linux 换行符差异,确保传递的路径字符串在 WSL 内被正确解析。
支持路径中的空格和特殊字符,自动去除首尾引号。

4、技术难点

WSL 挂载裸设备时需正确构造命令(wsl --mount --bare),且需等待挂载完成后再执行 dd,需处理异步时序。
diskpart 交互式命令的自动化需通过管道输入,需确保脚本无残留挂载,避免文件锁定。
压缩过程可能因 Docker 服务未完全退出而失败,需在脚本开头强制检测并提示用户退出。

示例图片

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论