解决docker rm删除的docker删除镜像后,磁盘空间不释放问题
一、问题根源:WSL2是个”貔貅精”!
(暴躁科普)你以为删了Docker镜像就能腾空间?太天真!
- WSL2本质是虚拟机:你在Windows里玩Docker?其实它在后台偷偷开了个Linux虚拟机!
- 虚拟硬盘文件(ext4.vhdx)是个流氓:这货会自己膨胀(比如从10G吃到50G),但删文件后它死都不缩水!
-
真相暴击:
docker rmi删镜像?Windows摊手:”关我屁事,我只管扩容不管缩容!”
(扎心总结)“这就好比你在房间里扔垃圾,垃圾袋会自动变大,但把垃圾扔了袋子还是鼓的!”
二、暴力解决方案:手撕虚拟硬盘!
▎STEP 0:找到罪魁祸首文件
路径:C:\Users\<你的用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx(血泪警告)
-
别动
docker-desktop或Ubuntu的vhdx文件! - 建议直接复制路径,手敲必错!
▎STEP 1:杀死WSL2和Docker进程
# 管理员模式打开PowerShell! wsl --shutdown # 给WSL2断子绝孙掌 wsl --list -v # 检查所有WSL状态必须都是"Stopped"
(说人话)
- 任务栏右键退出Docker Desktop不算数!必须用命令确认进程死透!
-
如果看到某个发行版还是”Running”,用
wsl -t <发行版名>补刀!
▎STEP 2:召唤Windows祖传压缩术
# 进入DiskPart(手别抖!) diskpart # 选中你的虚拟硬盘文件(路径粘贴进来!) select vdisk file="C:\Users\你的用户名\AppData\Local\Docker\wsl\data\ext4.vhdx" attach vdisk readonly # 先礼后兵只读模式 compact vdisk # 开始压榨空间! detach vdisk # 完事提裤子走人
(关键细节)
- 如果报错”文件被占用”,滚回去检查STEP 1!
-
compact过程可能卡住?正常!文件越大越慢,喝杯咖啡等着!
▎STEP 3:验收成果
- 去C盘属性看剩余空间 → 突然多出几十G → 嘴角疯狂上扬😏
- 重新打开Docker Desktop → 镜像和容器都在!稳如老狗!
三、日常防爆指南
1. 定期清理Docker垃圾
# 核弹级清理(慎用!) docker system prune -af # 删光所有镜像、容器、网络
(求生提示)
- 这命令连亲妈都不认!用之前确认无用镜像已备份!
2. 转移Docker数据到其他盘
- 打开Docker Desktop → Settings → Resources → Advanced
- 修改”Disk image location”到D盘/E盘 → Apply & Restart(原理暴击)“让WSL2去别的盘作妖,C盘从此笑看风云!”
3. 终极奥义:重置WSL2
wsl --unregister docker-desktop-data # 删库跑路大法
“效果堪比格式化!C盘秒瘦身,但所有Docker数据灰飞烟灭!”
四、杠精自救指南
Q:压缩完空间没变化?A:三大可能:
-
路径搞错了(检查是不是
data\ext4.vhdx) -
WSL2没关干净(用
wsl --list -v二次确认) - 没开管理员权限(DiskPart这爷只认皇帝身份!)
Q:compact vdisk报错?A:按顺序检查这三条命令!
-
select vdisk file="正确路径" -
attach vdisk readonly -
compact vdisk顺序错一个直接GG!
Q:改存储路径后Docker启动失败?A:给新路径开完全控制权限!
- 右键文件夹 → 属性 → 安全 → 编辑 → 添加”Everyone” → 勾选”完全控制”
(结尾暴击)
“转发这篇!让你司程序员告别C盘焦虑!下次谁再对着红色C盘骂街,把文章甩他脸上——叫爸爸!”
(玄学加成)“点赞收藏的人,三年内C盘永不爆红!🛡️”
(作者碎碎念)“为了测试这教程,我C盘红了8次……现在看到.vhdx文件就想砸电脑!💢
有问题?进群反馈呗~~
