将 WSL 和 Docker 迁移到别的磁盘
本文最后更新于 2026年5月14日 下午
Windows 下使用 Docker Desktop + WSL 2 时,C 盘很容易被占满。常见的大头是两类数据:
- WSL 的数据,比如 Ubuntu 的
ext4.vhdx - Docker 的镜像、容器、volume 数据,这些通常由 Docker Desktop 的 WSL 后端管理
关于 ext4.vhdx是什么:
一个 WSL 发行版,比如 Ubuntu,本质上就是 Windows 里面注册的一个 Linux 系统;它的大部分 Linux 文件系统内容都装在一个虚拟磁盘文件里,通常就是 ext4.vhdx。
下面介绍如何迁移这些。
准备工作
准备好迁移的目录
博主准备分别迁移到
D:\wsl 用来放 Ubuntu
D:\docker 用来放 Docker 镜像、容器、volume 等数据读者可以自行指定。
检查 WSL 状态
运行
wsl -l -v保证是 WSL2,否则接下来的操作不适用。
博主这里的输出是
NAME STATE VERSION
* Ubuntu Stopped 2
docker-desktop Stopped 2之后会迁移 Ubuntu,如果读者使用的 Linux 发行版不是 Ubuntu,使用 NAME 里面的字段名代替 Ubuntu 即可。
关闭 WSL 和 Docker
执行
wsl --shutdown并关闭 Docker Desktop。
迁移 WSL
先导出 Ubuntu:
wsl --export Ubuntu D:\wsl\Ubuntu.vhdx --format vhd这一步可能需要等一会儿。
确认导出成功:
Get-Item D:\wsl\Ubuntu.vhdx确认成功之后,注销原来的 Ubuntu:
wsl --unregister Ubuntu然后整理目录:
New-Item -ItemType Directory -Force D:\wsl\Ubuntu
Move-Item D:\wsl\Ubuntu.vhdx D:\wsl\Ubuntu\ext4.vhdx重新导入:
wsl --import-in-place Ubuntu D:\wsl\Ubuntu\ext4.vhdx检查是否成功:
wsl -l -v
wsl -d Ubuntu如果能够进入 Ubuntu,说明迁移成功。
这里如果用户使用 Windows 终端单独启动 WSL,可能会遇到之前的配置文件失效的情况:
不存在具有所提供名称的分发。
错误代码: Wsl/Service/CreateInstance/ReadDistroConfig/WSL_E_DISTRO_NOT_FOUND解决方案:把如图的「命令行」的内容改为
C:\WINDOWS\system32\wsl.exe -d Ubuntu --cd ~保存后重新打开即可。

迁移 Docker
直接使用 Docker Desktop 的 GUI 迁移即可。
打开 Docker Desktop,进入 Settings -> Resources -> Advanced,修改如图所示的 Settings -> Resources -> Advanced,改为自己设置的目录位置,然后点击 Apply & Restart 即可。
