资讯详情

资讯详情

WSL2与Docker Desktop迁移非系统盘及C盘空间回收

1. 先想清楚Docker 和 WSL2 到底把什么塞进了 C 盘第一次在新机器上装完 Windows 11 WSL2 Docker DesktopC 盘还剩 90 多个 G我心想这下够用了。三个月后系统盘告急打开空间分析工具一看一个叫ext4.vhdx的文件吃掉了 40 多个 G另一个docker_data.vhdx也不相上下。这就是我后来把整套环境从系统盘搬走的直接原因——不是洁癖是被虚拟磁盘逼的。先把概念摆正不然后面所有操作都是照抄命令、看不懂原理。WSL2 跟你想象中的“Windows 内置 Linux 兼容层”完全是两码事它是一个跑在 Hyper-V 之上的轻量级虚拟机里面运行着真实的 Linux 内核。既然是虚拟机就得有虚拟磁盘微软用的是 VHDX 格式文件名叫ext4.vhdx存放在你的用户目录深处默认路径大致是C:\Users\你的用户名\AppData\Local\Packages\发行版包名\LocalState\ext4.vhdx。这个文件会随着你装包、拉代码、编译项目一路膨胀而且它是只涨不缩的——你删了文件VHDX 内部的 Linux 文件系统确实腾出了空间但宿主机上看到的那块虚拟磁盘大小并不会自动回落得手动压缩。这一点是很多人误以为“我删了东西怎么还不释放空间”的根源。Docker Desktop 同理。它现在的默认后端就是 WSL2会额外创建两个专用发行版老版本叫docker-desktop和docker-desktop-data新版本把数据合并进了一个 VHDX 文件直接由 Docker Desktop 管理你拉下来的每一个镜像层、每一份容器写入数据全都落在那个虚拟磁盘里。所以在 C 盘上同时养着 WSL2 发行版和 Docker 数据盘等于养了两只会长大的气球。那为什么不干脆一开始就把它们装到 D 盘因为 Windows 这套东西的关键路径基本不受安装位置控制。WSL2 的发行版是走 Microsoft Store / 在线分发的默认就往用户目录塞Docker Desktop 的安装程序也不会问你数据放哪得装完之后进设置里改。这就决定了比较靠谱的做法是先装好、跑通、再整体搬移而不是一上来就折腾路径符号链接之类的偏门手法。硬要提前干预只会让后续升级和排查变得极其难受。这篇内容就是把我自己反复做过好几遍的完整流程摊开写Win11 下装 WSL2、装 Docker Desktop、把两者的大文件全部迁到非系统盘、迁移后的收尾调优以及一路上踩过的坑。适合两类人看——一类是刚接触容器、想在本机搭一套干净环境的另一类是环境已经装好了但 C 盘快满、需要“无痛搬家”的。前者按顺序走一遍就行后者可以直接跳到第 4、5 章。2. 动手之前三件必须先确认的事2.1 硬件虚拟化与那两个 Windows 功能开关这是最容易卡住新手的第一道门。WSL2 需要硬件虚拟化支持具体是 CPU 的 VT-x 或 AMD-V而且要在 BIOS/UEFI 里处于开启状态。查法很简单任务管理器 → 性能 → CPU右下角会显示“虚拟化已启用”或者干脆在 PowerShell 里跑一句systeminfo翻到最下面找“Hyper-V 要求”那一节四条全是“是”才算合格。功能层面Win11 需要启用两个可选功能虚拟机平台VirtualMachinePlatform和适用于 Linux 的 Windows 子系统Microsoft-Windows-Subsystem-Linux。现在的 WSL 版本在wsl --install时会自动帮你勾选但如果你机器上有组策略限制、或者系统被精简过自动勾选可能失败那就老老实实用命令行手动开dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart两条命令执行完必须重启。这里有个我踩过的坑值得单独说有些机器上同时开着第三方虚拟化软件比如安卓模拟器、虚拟光驱类工具或者系统里残留着旧版 Hyper-V 的组件配置会出现“功能开了但 WSL2 起不来”的情况报错代码通常是0x80370102。这类问题的排查顺序是先确认 BIOS 虚拟化是否真的开了再看Hyper-V 虚拟机监控程序这项功能是否被意外禁用注意 WSL2 本身并不要求完整开启 Hyper-V 管理器但需要底层虚拟化平台可用最后检查有没有安全软件拦截了虚拟机创建。注意开了虚拟机平台之后部分老版本的虚拟机软件、模拟器会因为抢占虚拟化资源而变慢或无法启动这是正常现象不是系统坏了。2.2 系统版本和 WSL 组件版本的“对齐”问题Win11 的初始版本21H2自带的是 WSL 的早期版本有些wsl --manage --move之类的新命令根本不存在--import的参数也不一样。所以在装发行版之前先更新 WSL 本体wsl --update wsl --versionwsl --version能正常输出而不是报“无效参数”就说明你用的是较新的独立版本 WSL。我建议把 WSL 更新到 2.0 以上原因有二一是原生支持--manage --move可以把发行版目录直接移到别的盘比导出再导入省一半时间二是支持sparseVhd自动回收也就是删掉文件后虚拟磁盘有机会自动瘦身省掉手动压缩的麻烦。顺带说明一个常被混淆的点wsl --set-default-version 2设置的是“新建发行版默认用哪个版本”不影响已存在的发行版。如果你之前装过 WSL1 的发行版用wsl -l -v能看到每条的版本号改的话是wsl --set-version 发行版名 2。这步转换在数据量大的时候会跑很久属于正常现象别以为卡死了。2.3 目标盘的选型和文件系统格式选盘这件事我见过太多人栽在这里。三个硬性要求检查项要求说明文件系统NTFS 或 ReFSexFAT、FAT32 不支持 VHDX 的稀疏文件特性迁移会直接报错剩余空间建议 ≥ 100 GB虚拟磁盘上限受限于所在分区容量别等到用满再搬盘类型优先 NVMe SSD容器读写密集机械盘上跑 Terraform 级别的构建会难受到怀疑人生另外提醒一句别把虚拟磁盘放到 OneDrive、坚果云这类同步目录下。同步客户端会去读这些大文件造成频繁的文件锁冲突和疯狂上传实测能让 WSL 直接卡死。也别放在移动硬盘或网络驱动器上WSL 是通过底层虚拟化接口挂载 VHDX 的非本地固定磁盘经常挂不上。2.4 一个容易被忽略的前置动作关掉正在跑的 WSL后面所有的迁移操作第一步都是wsl --shutdown。这句命令一定要养成习惯性执行的习惯因为它会关掉所有发行版和 Docker 的后端。如果 Docker Desktop 还开着wsl --shutdown之后它会愣在原地容器全断有时候还会自动拉起一半导致文件被占用迁移到一半报“文件正在使用中”。正确顺序是先退出 Docker Desktop右下角托盘图标右键 → Quit Docker Desktop等托盘图标消失再wsl --shutdown再确认wsl -l -v里所有发行版都是 Stopped 状态。3. WSL2 的安装与首轮配置3.1 一条命令装完但参数值得挑一挑最省事的装法就是打开 PowerShell管理员敲wsl --install它会把功能开关、内核更新、默认发行版通常是 Ubuntu 的某个 LTS 版本一次性搞定然后要求重启。但我更推荐带参数装掌控感更强wsl --install --no-distribution这句只装 WSL 本体和依赖不装任何发行版。重启之后你再用wsl --list --online看看有哪些可选的挑一个自己顺手的wsl --list --online wsl --install -d Ubuntu-22.04这么做的理由很实际默认发行版的版本不一定是你想要的而且很多人第一次装完之后想换发行版直接--unregister再重装中间那些初始化状态就白跑了。分开装的好处是先有底座再挑内容后面迁移的时候也更清楚自己在搬什么。发行版第一次启动会让你设置用户名和密码这个用户名是你日常在 Linux 里登录的账户密码是 sudo 密码记牢。装完之后第一件事是sudo apt update sudo apt upgrade -y把包索引和基础组件拉到最新尤其是 CA 证书和bash版本后面 Docker 里各种走 HTTPS 拉镜像的操作都依赖这些。3.2 systemd 要不要开这是个实际问题老版本 WSL 里是没有 systemd 的所有服务都得手动起很多人习惯性地用service xxx start。后来 WSL 支持了 systemd配置方式是在/etc/wsl.conf里写[boot] systemdtrue改完wsl --shutdown再启动systemctl status就能用了。要不要开我的建议是如果你的工作流里需要常驻服务比如本地跑数据库、跑 CI 风格的构建、用 systemd 管理某些后台进程就开如果只是拿 WSL 当个命令行工具跑跑 git、node、python那开着也没坏处但会多占一点内存。这里还有一个必须配置的东西就是默认登录用户。--import方式迁移过来的发行版默认用户会变成 root用起来各种别扭家目录变了、SSH key 找不到、权限都是 root。在/etc/wsl.conf里补一行就行[user] default你的用户名3.3 用 .wslconfig 给内存和 CPU 上个笼头这一点很多人不知道WSL2 默认会吃掉宿主机最多一半的物理内存而且是动态伸缩的跑大型编译的时候能让整个 Windows 卡成幻灯片。配置文件放在C:\Users\你的用户名\.wslconfig注意是 Windows 用户目录下不是 Linux 里面新建后用文本编辑器写[wsl2] memory8GB processors4 swap2GB swapFileD:\\wsl\\swap.vhdx localhostForwardingtrue sparseVhdtrue参数含义掰开说memory是硬上限16G 内存的机器给 8G 比较合适32G 的可以给到 1216Gprocessors是虚拟 CPU 数别超过物理核心数不然调度反而变慢swap是交换分区大小编译大项目的时候给 24G 能救命swapFile把它也放到非系统盘省 C 盘空间localhostForwarding让 Windows 侧可以直接用localhost:端口访问 WSL 里的服务这条几乎是必开的不然你本地跑个 Web 服务还得去查 WSL 的 IP。还有一个较新版本才支持的autoMemoryReclaimgradual作用是空闲一段时间后把 WSL 占的内存还给 Windows。老版本机器上这条可能不生效不生效就直接删掉别留着某些版本上写了不认识的键会让整个配置文件被忽略——这个坑我吃过一次改了配置半天没反应查了半天才发现是某一行参数名写错了导致全文件失效。4. 把 WSL2 发行版搬到非系统盘4.1 先弄明白迁移的本质是搬一个虚拟磁盘很多人以为迁移就是把文件夹剪切粘贴过去这是绝对不行的。WSL 的发行版不是一个普通目录它在系统里注册了 GUID、路径、默认用户、版本号等元数据你手动移动目录注册表里的路径还指着老地方结果就是发行版直接消失。正确的做法有两条路路线 Awsl --manage --move推荐WSL 2.0 以上。一条命令搞定WSL 自己处理注册信息和文件搬移最省心。路线 Bexportunregisterimport通用任何版本可用。把整个发行版打包成一个 tar 文件注销旧发行版再从 tar 文件导入到新位置。步骤多但可控性强tar 文件还可以当作备份留着。两条路的共同前提都是先wsl --shutdown所有发行版停干净。下面是路线 B 的完整操作因为它的兼容性最好也最能体现原理。4.2 完整迁移步骤与参数含义第一步列出所有发行版确认名字和版本wsl -l -v输出里NAME那一列就是后续命令要用的标识大小写和空格都要对。假设叫Ubuntu-22.04。第二步导出。目标路径选在空间充足的盘上tar 文件大小通常和原 vhdx 差不多甚至更大一点tar 不做压缩的话wsl --export Ubuntu-22.04 D:\wsl-backup\ubuntu2204.tar这一步的耗时跟数据量强相关几十 G 的发行版跑十几分钟很正常中间别关窗口。如果嫌文件太大可以先用wsl进去清理一下缓存sudo apt clean、删掉~/.cache能省下不少体积。第三步注销旧发行版wsl --unregister Ubuntu-22.04注意--unregister会永久删除该发行版及其全部数据包括你的家目录。执行前确认 tar 文件已经完整生成最好用dir D:\wsl-backup\ubuntu2204.tar看一眼文件大小不是 0。第四步导入到新位置wsl --import Ubuntu-22.04 D:\wsl\ubuntu2204 D:\wsl-backup\ubuntu2204.tar --version 2三个参数分别是发行版名字、新的安装目录VHDX 会放在这里、tar 文件路径。安装目录必须是空目录或者不存在让 WSL 自己创建提前建好一个带其他文件的目录会报错。--version 2显式指定 WSL2避免某些环境下默认回落到 WSL1。第五步恢复默认用户。前面说过导入之后默认用户是 root改/etc/wsl.confwsl -d Ubuntu-22.04 -u root进去之后编辑/etc/wsl.conf[user] default你的用户名保存退出wsl --shutdown再启动就恢复正常了。这一步不做的话你会发现家目录是/root之前装的所有东西、配的 SSH key 全“不见了”——其实没丢只是换了用户。4.3 迁移后的验证清单搬完别急着删 tar 文件先做这几项确认验证项操作期望结果发行版列表wsl -l -v状态 Running/Stopped版本 2默认用户whoami你的用户名不是 root家目录数据ls ~之前的项目文件和配置都在网络连通curl -I https://…能正常返回响应头新位置文件查看D:\wsl\ubuntu2204有ext4.vhdx且体积合理全部通过之后再删掉中间那个 tar 文件。我个人的习惯是留一份 tar 当“冷备份”放一两周确认新环境稳定再清毕竟--unregister是不可逆的多留一手成本很低。如果你用的是路线 A命令就一行wsl --manage Ubuntu-22.04 --move D:\wsl\ubuntu2204它会自己完成停机、搬移、重新注册的全过程。缺点是没有中间产物做备份所以我对重要数据的发行版还是习惯走导出导入。另外这条命令要求目标目录不存在或为空磁盘空间要够因为它内部也是复制一份。5. Docker Desktop 的安装与数据盘迁移5.1 安装时的两个关键勾选项从官网下载 Docker Desktop 安装包双击运行。安装向导里有两个选项值得留意Use WSL 2 instead of Hyper-VWin11 上默认就是这个保持勾选。选择 WSL2 后端的好处是启动快、资源占用低、能和你的 WSL 发行版共享网络与文件。Add shortcut to desktop / Enable WSL integration前者随意后者要勾。装完重启有些机器不重启也行但 Docker 第一次启动会初始化 WSL 后端重启更稳。启动后右下角出现小鲸鱼图标第一次会弹服务条款接受即可。如果提示“WSL 2 installation is incomplete”说明 WSL 内核更新没到位回到第 2 章跑一次wsl --update。还有个细节安装完成后wsl -l -v会多出一到两个以docker-desktop开头的发行版。新版 Docker Desktop 里数据集中放在一个由 Docker 自己管理的 VHDX 文件里位置默认在C:\Users\用户名\AppData\Local\Docker\wsl\下面那个docker_data.vhdx或类似名字就是罪魁祸首之一。5.2 用图形界面把数据盘位置改掉最省事这是官方支持的正规路径也是我最推荐的方式。步骤确保 Docker Desktop 完全退出托盘右键 → Quit。在目标盘建好目录比如D:\docker-data。打开 Docker Desktop → 右上角齿轮Settings→ 左侧Resources→Advanced。找到Disk image location点Browse选到D:\docker-data。点Apply restart。Docker 会自己把现有的数据搬过去界面上有进度提示。数据量大时这个过程会持续几分钟到十几分钟期间别去手动关进程。在这里顺便把资源限额也调一下同一个Advanced页面里CPU 和内存的上限设置对 WSL2 后端其实影响有限真正的上限由.wslconfig控制但Virtual disk limit值得设置比如给 128GB避免容器日志无限增长把盘吃满。5.3 手工迁移 docker-desktop 发行版界面搬不动时的备用方案有些情况下图形界面改位置会失败报一个含糊的错误或者卡在“Moving…”不动。这时候就得回到命令行思路和迁移普通发行版一样只是要处理两个特殊发行版。先看清单wsl -l -v老版本会有docker-desktop跑引擎和docker-desktop-data存数据两个。新版本通常只剩一个docker-desktop数据由 Docker 通过docker_data.vhdx管理这时候命令行迁移的意义就不大了老老实实排查界面为什么失败常见原因是目标盘空间不足、目录权限不对、或者上一次迁移留下的临时文件没清。如果确实是双发行版的旧结构操作如下wsl --shutdown wsl --export docker-desktop-data D:\docker-backup\ddd.tar wsl --unregister docker-desktop-data wsl --import docker-desktop-data D:\docker\data D:\docker-backup\ddd.tar --version 2注意docker-desktop-data这个发行版是 Docker 自己管理的手工迁移之后不要再去wsl里登录它、改它的默认用户任何定制都可能让 Docker 启动时自检失败表现为小鲸鱼一直转圈然后提示引擎停止。数据搬完之后再启动 Docker Desktop如果它报错说找不到数据可以尝试Settings → Troubleshoot → Restart或者干脆Reset to factory defaults重新拉镜像——当然那只在你不心疼已有镜像的情况下才用。5.4 一个更干净的思路项目文件全部放进 WSL迁移完数据盘还有个隐形的 C 盘消耗大户你在 Windows 侧建的项目目录通过/mnt/c/...被 WSL 访问。这种方式下文件 I/O 要经过一层跨系统文件共享早期是 9p 协议新版做了优化但仍然比原生慢一个数量级而且容器里挂载这些路径做编译时性能能差出好几倍。更麻烦的是符号链接和文件权限经常对不上。我现在的习惯是代码仓库全部放在 WSL 的家目录里~/projects/xxx用 VS Code 的 Remote-WSL 打开编辑体验和本地没区别但编译速度和权限问题一次性解决。这也间接省掉了 C 盘上一大批node_modules、target、build目录的空间。6. 迁移后的收尾空间回收与性能调优6.1 VHDX 只涨不缩压缩得手动来前面提过这个特性这里给具体做法。虚拟磁盘文件删除内部数据后不会自动缩小得用工具压缩。Windows 自带的diskpart就能干步骤稍微绕wsl --shutdown diskpart进去之后依次执行select vdisk fileD:\wsl\ubuntu2204\ext4.vhdx attach vdisk readonly compact vdisk detach vdisk exitcompact vdisk就是真正干活的那句执行时间跟文件大小有关几十 G 的文件跑几分钟。跑完再看文件属性通常能缩回去 30%60%。这个操作我一般一个月做一次或者在跑完一个大型构建、清掉一堆容器镜像之后顺手来一发。如果你用的是较新版 WSL还有个更省事的路子wsl --manage 发行版 --set-sparse true开启稀疏文件后删除的数据有机会自动回收。但要注意稀疏文件在某些备份软件、云同步工具处理时会出问题我个人的做法是默认不开自动稀疏定期手动压缩可控性更好。6.2 迁移后常见的路径与权限问题搬到 D 盘之后有几个细节会跟以前不一样值得提前知道跨盘访问变慢了吗不会。WSL 访问自己所在盘的 VHDX 是走虚拟化层跟物理位置无关。真正影响性能的是访问/mnt/c、/mnt/d这类宿主机路径跟 VHDX 放哪个盘没关系。软链接会不会断Windows 侧的符号链接指向旧路径的会断WSL 内部创建的 Linux 符号链接不受影响因为它记录的是 Linux 内的相对/绝对路径。备份工具要注意。某些备份软件在处理 VHDX 时会把它当作普通大文件处理每次全量备份几十 G 很浪费。我一般把D:\wsl和D:\docker-data排除在常规备份之外需要备份时用wsl --export单独导一份既省空间又能保留完整状态。盘符变动会要命。如果你的 D 盘是外接硬盘或者动态分配的盘符某次开机变成 E 盘WSL 就找不到虚拟磁盘了表现是所有发行版消失。这种情况的补救办法是重新执行--import到新路径或者用磁盘管理把盘符改回去。所以我一般建议把 WSL 和 Docker 的数据盘固定成一个内置的、盘符不会变的固态分区。6.3 把 Docker 的构建缓存也管起来Docker 自己也有个吃空间的习惯构建缓存。docker system df能看到分项占用经常是 Images 还好Build Cache 占了好几 G。定期清理docker system prune -a --volumes这条会删掉所有未被使用的镜像、容器、网络和卷属于“核弹级”清理用之前确认没有靠停止状态保活的容器。温和一点的话用docker builder prune --filter until168h只清 7 天前的构建缓存。Docker Desktop 里也有图形入口Settings → Resources → Advanced → Disk usage能看到当前占用也可以在这里触发清理。我个人更习惯命令行因为输出更明确。7. 报错与排查速查表7.1 安装阶段虚拟化与内核问题现象大概率原因处理方式WslRegisterDistribution failed with error: 0x80370102硬件虚拟化未开或虚拟机平台功能未启用进 BIOS 开 VT-x/AMD-V再检查VirtualMachinePlatform功能状态WSL 2 requires an update to its kernel component内核更新包缺失wsl --update失败则手动下载安装包0x800701bc老版本 WSL 内核不匹配同上更新后wsl --shutdown重启Docker 提示 WSL 2 installation is incompleteDocker 检测不到合规的 WSL2先跑通wsl -l -v能正常输出再重启 Docker--install卡在下载网络问题或 Store 服务异常改用wsl --install --no-distribution后手动装发行版关于0x80370102我补充一个不太常见但真实的成因机器上装过某些虚拟化平台后卸载不干净残留的虚拟交换机配置会让 WSL 无法建立虚拟网络。这种情况下Hyper-V 管理器里能看到一堆孤立的虚拟交换机清理掉往往就好了。7.2 迁移阶段路径、权限、占用现象大概率原因处理方式The system cannot find the path specified目标目录不存在或含特殊字符用纯英文路径比如D:\wsl\ubuntu2204The process cannot access the fileDocker 或发行版还在运行退出 Docker Desktopwsl --shutdown后再操作导入后默认用户变 root/etc/wsl.conf未配置加[user] defaultxxx重启迁移后网络不通DNS 配置残留wsl --shutdown重启必要时检查/etc/resolv.conf虚拟磁盘挂不上目标盘是 exFAT/网络盘换到 NTFS 本地固定磁盘路径这一条值得多说两句。WSL 的命令行对路径的处理有时候很微妙含中文字符、空格、符号的路径容易出问题尤其是--import的目标目录。我的建议是所有 WSL 相关目录一律用纯英文、无空格、层级浅的路径比如D:\wsl\、D:\docker-data\。省下的排查时间远超你起名字时的那点纠结。7.3 运行阶段性能与网络现象排查方向容器内编译极慢项目是否放在/mnt/c下搬到~/里再试WSL 内存越吃越多不释放检查.wslconfig是否生效考虑开autoMemoryReclaim宿主机访问不了 WSL 服务确认localhostForwardingtrue或直接用 WSL IPDocker 启动后占用几个 G 内存不动引擎本身 镜像索引的固定开销属正常可调小内存上限磁盘占用只增不减VHDX 未压缩按 6.1 节处理.wslconfig是否生效有个快速验证法改完之后wsl --shutdown再启动进去跑free -h和nproc看内存总量和 CPU 数是不是你设的值。如果没变八成是文件放错位置了——它必须在 Windows 用户目录下C:\Users\名字\.wslconfig不是 Linux 里的~/.wslconfig这个混淆我看到过太多次。8. 我踩过的坑和长期维护的几个习惯先说印象最深的一次事故。给一台笔记本迁 WSL 发行版导出 tar 之后执行--unregister然后--import的时候手滑把目标目录写成了 tar 文件所在的目录结果 WSL 在里面创建 VHDX 时把 tar 文件跟自己搞到了同一个目录后来我清理临时文件的时候顺手把整个目录删了虚拟磁盘和备份一起没了。教训很直接导入目录和备份文件目录必须分开而且备份文件在验证完成之前不要动。现在我的固定布局是D:\wsl\发行版\放运行数据D:\wsl-backup\放 tar两个目录物理隔离清理时永远不会误伤。第二个坑跟 Docker 的图形界面迁移有关。有一次在 Settings 里改 Disk image location点了 Apply 之后界面一直转圈我等得不耐烦强制关了进程结果 Docker 处于半迁移状态老的 vhdx 还在新的目录里有个不完整的文件启动时报“引擎无法启动”。最后的解法是删掉新目录里的残留文件重新启动 Docker 让它回退到旧位置然后再迁移一次这次耐心等它跑完。所以我的建议很简单点完 Apply 之后去泡杯茶别碰它界面卡住不代表没在动后台在复制几十 G 的数据。第三个是内存。有段时间我的机器频繁出现整个系统假死任务管理器里显示 WSL 占了 20 多 G。原因是.wslconfig里我把 memory 设成了 24GB而机器总共 32GBWindows 自己也要吃饭。后来改成 12GB再加autoMemoryReclaimgradual情况明显好转。这件事让我形成了一个习惯给 WSL 的内存上限不超过物理内存的 60%剩下的留给宿主系统和 Docker。日常维护上我现在固定做三件事第一每个月跑一次 VHDX 压缩两个盘都压WSL 的和 Docker 的通常能回收十几 G。第二docker system df看一眼Build Cache 超过 10G 就清镜像超过 30 个就把不用的删掉。这里有个小技巧给常用镜像打个明确的 tag清理时用docker image prune -a --filter until720h只删两周以上没被引用的避免误删。第三每季度用wsl --export导一份完整备份放到另一块盘上。这份备份不常用但在我遇到过的一次虚拟磁盘损坏里救了大命——那次是断电导致 vhdx 文件系统损坏wsl启动直接报错导出的 tar 重新 import 之后就恢复了损失的只是几天的增量。最后分享一个我觉得很值的小设置把 WSL 发行版和 Docker 的数据目录都放到同一块非系统盘上然后在资源管理器里给D:\wsl加个快捷方式到任务栏。这样每次想看看虚拟磁盘长多大了一点就开比在深层目录里翻要顺手得多。空间这种事看得见才管得住。
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →