答案是Docker Desktop在Windows下默认将WSL数据存于C盘用户目录,导致C盘空间告急;可通过GUI一键迁移(Settings→Resources→Advanced→Change Docker Root Dir)或命令行导出/注销/导入方式,将docker-desktop-data迁至非系统盘释放空间。

当Docker Desktop在Windows上长期使用后,C盘的C:\Users\<用户名>\AppData\Local\Docker\wsl\data目录会迅速膨胀至几十GB,导致系统盘告急、编译卡顿甚至启动失败——这不是磁盘坏道,而是镜像数据默认挤在系统盘的必然结果。
确认当前存储位置
打开 Docker Desktop → 右下角托盘图标右键 → Settings → Resources → Advanced → 查看“Docker Root Dir”右侧路径,通常显示为C:\Users\XXX\AppData\Local\Docker\wsl。这个路径里的data文件夹就是罪魁祸首,直接右键属性看大小,往往已超30GB。
⚠️ 注意:别跳过这步。有些用户误以为改的是安装路径,实际要动的是WSL实例的存储根目录,二者完全无关。
停止Docker与WSL实例
关闭 Docker Desktop 主程序窗口(不是仅关闭托盘图标)。
以管理员身份打开 PowerShell,执行:
wsl --shutdown
再运行 wsl --list -v,确认 docker-desktop-data 和 docker-desktop 两行状态均为 Stopped。若仍有 Running,说明 Docker Desktop 没真正退出,需任务管理器结束所有 Docker.exe 进程后再试。
迁移WSL实例到新盘
方法一:导出→注销→导入(推荐,兼容性最强)
① 创建备份目录(务必选非系统盘,如 D:\docker\backup):
mkdir D:\docker\backup
② 导出当前实例(耗时取决于镜像体积,50GB约需8–15分钟):
wsl --export docker-desktop-data D:\docker\backup\docker-desktop-data.tar
③ 注销原实例(此操作不可逆,但已有备份):
wsl --unregister docker-desktop-data
④ 创建目标目录并导入(必须加 --version 2,否则导入后无法识别):
mkdir D:\docker\data
wsl --import docker-desktop-data D:\docker\data D:\docker\backup\docker-desktop-data.tar --version 2
方法二:GUI一键迁移(仅限 Docker Desktop 4.20+)
Settings → Resources → Advanced → 点击“Docker Root Dir”右侧的“Change”按钮 → 选择新路径(如 D:\docker\wsl)→ 点击 Apply & Restart。系统会自动触发 WSL 实例迁移,进度条走完即生效。该方式无需手动命令,但首次重启可能卡在“Starting backend…”达2–3分钟,耐心等待即可。
验证新路径生效
重启 Docker Desktop,右下角鲸鱼图标稳定显示后,打开 PowerShell 执行:
wsl -d docker-desktop-data -e sh -c "df -h / | tail -1"
输出中第二列应显示新路径所在磁盘(如 /dev/sdd1),且挂载点为 /。再运行 docker info | grep "Docker Root Dir",返回值必须是 D:\docker\data 或你设定的目标路径,而非旧的 C:\Users\...。
此时拉取新镜像(如 docker pull nginx:alpine),观察 D 盘对应目录是否实时增长,确认无误后可手动删除 C:\Users\...\AppData\Local\Docker\wsl\data 原始文件夹释放空间。



















