docker 导致 windows 系统 C 盘爆满
简介
docker 导致 windows 系统 C 盘爆满
问题
今天发现电脑C盘爆红,找了一下大文件,发现是名为ext4.vhdx
的文件,这个是与docker
相关的文件,由于在Linux
中下载安装各种软件、Docker Image
,运行多个Docker Container
导致C盘空间严重不足。
收缩ext4.vhdx文件
清理不必要的镜像
docker system prune
停止wsl服务
这个很慢,还不如重启,跳过这一步
wsl --shutdown
运行diskpart释放空间
win命令行中执行, file= 换成自己的路径
diskpart
选择虚拟机文件执行瘦身
select vdisk file="C:\Users\Administrator\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
运行完可以发现释放了好大的空间。如果C盘够大,就没必要看下面的迁移了。
zerofree
进入到 WSL2 中,运行 zerofree 将 ext4 文件系统内已经不用的块填零,但 zerofree 不能运行在已经挂载为 rw 的文件系统上,那就把文件系统挂载为 readonly 就行了
mount /dev/sda -o remount,ro
zerofree /dev/sda
运行结束后,在 Windows 下关闭 WSL2
wsl --shutdown
再次运行diskpart释放空间步骤
迁移
当然,如果C盘比较小,想迁移到别的盘也是可以的
查看WSL实例
wsl -l -v
- NAME STATE VERSION
- Ubuntu-20.04 Stopped 2*
我只安装了一个WSL2的实例,名为Ubuntu-20.04将现有WSL2实例备份导出:
导出到D盘下,命名为buntu-20.04_bak.tar.tarwsl --export Ubuntu-20.04 D:\Ubuntu-20.04_bak.tar
备份完成后可以注销现有实例
wsl --unregister Ubuntu-20.04
指定存放虚拟磁盘镜像文件的路径
wsl --import Ubuntu_new D:\WSL_Ubuntu D:\Ubuntu-20.04_bak.tar --version 2
Ubuntu_new
· 实例名称,可以自己设置,设置后即为第2步输入wsl -l -v后显示的名称;
D:\WSL_Ubuntu
· 导入后的镜像及其相关数据存放路径;
D:\Ubuntu-20.04_bak.tar
· 导入的备份,即第3步通过wsl —export导出的文件;
–version 2
· WSL版本为2
设置默认登录用户
ubuntu config --default-user root