
我们都知道安装软件要尽可能安装在C盘以外的位置,但是有些软件总喜欢把数据默认存储在C盘中,甚至会出现数据比软件占空间更大的情况,比如QQ,微信等。对于开发者来说,还有一个软件,它本体不大,同样是默认将数据存储在C盘,数据动辄十几个GB甚至上百个GB,稍不注意就会撑爆C盘,这就是——Docker。
那么如何将Docker从C盘迁移到其他盘呢?
一般docker数据会默认存在 C:\Users\Guang\AppData\Local\Docker\wsl 这个目录下,Users在文件夹里面可能显示为“用户”,并将 Guang 替换成你自己的电脑用户名,AppData文件夹是隐藏的,如果看不见先显示隐藏文件夹。
如果找不到也可以下个 everthing 软件去找,或者下个 treesize ,这个庞然大物总是藏不住的:TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急
可以先检查一下要迁移的文件总大小,确定要迁移的盘可用内存大于要迁移的内容,最好是两倍(因为要先打包后拆包)。
然后打开cmd,输入命令列出已注册的 WSL 发行版信息:
wsl --list -v如果你安装了docker,你的主要数据都会存在 docker-desktop-data 里面,当然建议你将所有内容都迁移出C盘,一步到位。

如上图,state这一列,如果要迁移的不都是 stopped ,就需要手动关闭,比如先退出所有docker desktop等依赖docker的软件,再使用如下命令来确保关闭:
wsl --shutdown操作之后再输入wsl --list -v命令,列出已注册的 WSL 发行版信息检查state是否都变成stopped。
在你想迁移的盘内新建一个文件夹,比如我的是D:\docker(下面的base就是指这个路径)。然后使用如下命令:
wsl --export docker-desktop-data D:\docker\docker-desktop-data.tar
// docker-desktop-data就是docker数据存放的位置
// 这里我将所有的wsl发行版实例都导出来了,所以还有如下命令
wsl --export docker-desktop D:\docker\docker-desktop.tar
wsl --export Ubuntu-22.04 D:\docker\Ubuntu-22.04.tar命令的格式如下,wsl实例名就是wsl --list -v命令执行后的name一列中的元素,base路径就是你创建的新文件夹:
wsl --export wsl实例名 base路径+wsl实例名.tar
执行成功长这样:

如果卡顿请稍等,如果实在卡死,就按Ctrl + C 切出,去目标文件夹删除导出了一半的 tar 文件,再重新导出这个 wsl 实例的tar包。
确定执行成功,就可以释放C盘中的内存了,请注意,这一步执行完,C盘中的原文件就都删除了。
wsl --unregister docker-desktop-data
// 同理,只删除你刚刚导出成功的 WSL 实例
wsl --unregister docker-desktop
wsl --unregister Ubuntu-22.04同理,你导出了哪些 WSL 实例,注销了哪些 WSL 实例,这里就要导入哪些 WSL 实例,命令格式为:
wsl --import 实例名 目标文件夹 tar包所在位置 --version 2(按照wsl --list -v中的version来)
我执行的具体命令为:
# 1. 导入 docker-desktop(Docker 系统进程)
wsl --import docker-desktop D:\docker\docker-desktop D:\docker\docker-desktop.tar --version 2
# 2. 导入 docker-desktop-data(Docker 镜像/容器/卷等数据,关键!)
wsl --import docker-desktop-data D:\docker\docker-desktop-data D:\docker\docker-desktop-data.tar --version 2
# 3. 导入 Ubuntu 22.04(自用 Linux 环境)
wsl --import Ubuntu-22.04 D:\docker\ubuntu-22.04 D:\docker\Ubuntu-22.04.tar --version 2这里不要将这些实例全部注册到同一个文件夹下,要加一层子文件夹,比如我这里的目标文件夹分别是D:\docker\docker-desktop、D:\docker\docker-desktop-data、D:\docker\ubuntu-22.04,不然可能会报错。
这里就已经迁移成功了,再次启动docker,发现数据从D盘加载,C盘空间释放完毕,没问题就可以把tar包给删除掉。
docker-desktop 负责存储 Docker Engine 、 CLI工具、Docker配置等,不存储用户的具体数据,所以一般体积较小。
docker-desktop-data 存储了所有的 Docker 镜像,所有容器的可写层,所有的 Volume 数据卷,构建的缓存等,一般体积较大。
所以不建议将 docker-desktop-data 放到C盘,会随着镜像和容器的增加大幅占用C盘的空间。但是docker不管安装在哪个盘,总是默认会将数据放到C盘下,所以需要手动处理一下。
Docker 作为开发者利器,本应提升效率,却常因默认将海量数据存入 C 盘而“反噬”系统性能。将 docker-desktop-data 等关键数据迁移至其他磁盘,还能在不丢失任何镜像、容器或卷的前提下,彻底释放 C 盘压力。整个过程虽需几步命令,但清晰、安全、可逆。掌握这一技巧,从此告别“C 盘告急”,让开发环境既高效又整洁。
只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~