应将Docker Desktop的WSL2数据迁移至非C盘路径,具体操作为:先导出docker-desktop-data和docker-desktop发行版为tar包,再注销原发行版,最后以--version 2参数导入到D盘指定路径,确保Docker数据不再占用C盘空间。

Windows 10上Docker Desktop默认把所有镜像、容器和卷数据塞进C盘隐藏路径%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx,这个虚拟磁盘文件只增不减,哪怕删光镜像,空间也不释放——你用着用着突然发现C盘只剩8GB,连系统更新都失败,这时候必须动手把它彻底搬走。
确认当前WSL2状态与发行版
以管理员身份打开PowerShell,执行:
wsl --list -v
确保看到两行输出:docker-desktop 和 docker-desktop-data,且 VERSION 列均为 2。如果任一为 1 或未列出,说明Docker未启用WSL2后端或WSL2未正确安装,后续迁移会失败。
执行 wsl --shutdown 确保所有WSL实例已终止,否则下一步导出会报错“无法访问正在运行的发行版”。
停止Docker并导出两个核心发行版
右键任务栏Docker图标 → Quit Docker Desktop,确保托盘图标消失。
在已关闭Docker且执行过 wsl --shutdown 的PowerShell中,依次运行:
wsl --export docker-desktop-data D:\Docker\wsl\docker-desktop-data.tar
wsl --export docker-desktop D:\Docker\wsl\docker-desktop.tar
【D:\Docker\wsl\ 目录必须提前手动创建】,否则命令直接报错并中断流程;不要用中文路径、空格或特殊符号,Docker对路径敏感。
注销原发行版并导入到新位置
第一步:彻底清除旧数据(不可逆)
wsl --unregister docker-desktop-data
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
wsl --unregister docker-desktop
第二步:重建发行版,指定新安装路径和WSL2版本
① 导入 data 发行版(关键!它存所有镜像和卷):
wsl --import docker-desktop-data D:\Docker\wsl\data D:\Docker\wsl\docker-desktop-data.tar --version 2
② 导入 engine 发行版:
wsl --import docker-desktop D:\Docker\wsl\distro D:\Docker\wsl\docker-desktop.tar --version 2
注意:【--version 2 必须显式写出】,省略会导致导入为WSL1,Docker Desktop启动后立即崩溃。
重启Docker并验证迁移效果
双击启动Docker Desktop,等待状态栏图标变绿、显示“Docker Desktop is running”。
打开PowerShell,运行:
wsl -d docker-desktop-data -e sh -c "df -h / | tail -1"
若返回的 Mounted on 是 / 且 Filesystem 指向类似 /dev/sdb1 或路径含 D: 字样,说明已成功挂载到D盘;若仍是 /dev/sda1 或路径含 C:,则导入失败,需检查上一步的路径拼写和权限。
拉取一个新镜像测试:
docker pull alpine:latest
随后检查 D:\Docker\wsl\data\ 目录下是否生成了新的 ext4.vhdx 文件,并持续增大——这是迁移生效的铁证。


















