Windows
现象
我在wsl中用到了docker进行一些测试,当测试完成后,将image删除,但是C盘并没有减少
原理
因为wsl用到了虚拟磁盘,而虚拟磁盘一般是动态扩容的,例如原来是10G,当里面空间不够的时候,会扩容到20G,但是当不需要这么多空间的时候,并不会自动收缩,这就导致了上面提到image删除后,并没有减少C盘的占用。
解决
知道了原理,方向就有了:对虚拟磁盘进行收缩操作
如下步骤:
1、先停掉wsl
a、停掉docker desktop
b、停掉wsl
wsl --shutdown
效果执行命令查看
wsl --list -v
2、压缩磁盘虚拟文件
文件的位置一般在 C:\Users\<你当前用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx
运行diskpart,会弹出新的专属命令窗口
diskpart
执行压缩
# 选择虚拟磁盘文件
select vdisk file="C:\Users\<你当前用户名>\AppData\Local\Docker\wsl\data\ext4.vhdx"
# 压缩文件
compact vdisk
# 压缩完毕后卸载磁盘
detach vdisk
结果
可以到虚拟磁盘文件的路径看看,这个时候应该已经减小
3、最后
重新运行docker desktop