将 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 即可。