目录
【简单快速】windows中docker数据如何从C盘迁移到其他盘
[2、确定所有 wsl 发行版实例已关闭](#2、确定所有 wsl 发行版实例已关闭)
[5、从 tar 文件导入到新位置](#5、从 tar 文件导入到新位置)
[二、docker-desktop 和 docker-desktop-data 分别是什么?](#二、docker-desktop 和 docker-desktop-data 分别是什么?)
作者:watermelo37
CSDN优质创作者、华为云云享专家、阿里云专家博主、腾讯云"创作之星"特邀作者、火山KOL、支付宝合作作者,全平台博客昵称watermelo37。
一个假装是giser的coder,做不只专注于业务逻辑的前端工程师,Java、Docker、Python、LLM均有涉猎。
温柔地对待温柔的人,包容的三观就是最大的温柔。
【简单快速】windows中docker数据如何从C盘迁移到其他盘

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

2、确定所有 wsl 发行版实例已关闭
如上图,state这一列,如果要迁移的不都是 stopped ,就需要手动关闭,比如先退出所有docker desktop等依赖docker的软件,再使用如下命令来确保关闭:
bash
wsl --shutdown
操作之后再输入wsl --list -v命令,列出已注册的 WSL 发行版信息检查state是否都变成stopped。
3、新建一个文件夹并导出tar到该文件夹
在你想迁移的盘内新建一个文件夹,比如我的是D:\docker(下面的base就是指这个路径)。然后使用如下命令:
bash
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包。
4、注销(删除)原发行版
确定执行成功,就可以释放C盘中的内存了,请注意,这一步执行完,C盘中的原文件就都删除了。
bash
wsl --unregister docker-desktop-data
// 同理,只删除你刚刚导出成功的 WSL 实例
wsl --unregister docker-desktop
wsl --unregister Ubuntu-22.04
5、从 tar 文件导入到新位置
同理,你导出了哪些 WSL 实例,注销了哪些 WSL 实例,这里就要导入哪些 WSL 实例,命令格式为:
wsl --import 实例名 目标文件夹 tar包所在位置 --version 2(按照wsl --list -v中的version来)
我执行的具体命令为:
bash
# 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,不然可能会报错。
6、启动检查,删除tar包
这里就已经迁移成功了,再次启动docker,发现数据从D盘加载,C盘空间释放完毕,没问题就可以把tar包给删除掉。
二、docker-desktop 和 docker-desktop-data 分别是什么?
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 盘告急",让开发环境既高效又整洁。
只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
其他热门文章,请关注:
极致的灵活度满足工程美学:用Vue Flow绘制一个完美流程图
你真的会使用Vue3的onMounted钩子函数吗?Vue3中onMounted的用法详解
测评:这B班上的值不值?在不同城市过上同等生活水平到底需要多少钱?
通过array.filter()实现数组的数据筛选、数据清洗和链式调用
TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急
通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能
高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图
通过MongoDB Atlas 实现语义搜索与 RAG------迈向AI的搜索机制
前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略
深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能
JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题
内存泄漏------海量数据背后隐藏的项目生产环境崩溃风险!如何避免内存泄漏
MutationObserver详解+案例------深入理解 JavaScript 中的 MutationObserver
