【简单快速】windows中docker数据如何从C盘迁移到其他盘

目录

【简单快速】windows中docker数据如何从C盘迁移到其他盘

一、迁移实践步骤

1、确定空间大小和移动目标

[2、确定所有 wsl 发行版实例已关闭](#2、确定所有 wsl 发行版实例已关闭)

3、新建一个文件夹并导出tar到该文件夹

4、注销(删除)原发行版

[5、从 tar 文件导入到新位置](#5、从 tar 文件导入到新位置)

6、启动检查,删除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的用法详解

Web Worker:让前端飞起来的隐形引擎

测评:这B班上的值不值?在不同城市过上同等生活水平到底需要多少钱?

通过array.filter()实现数组的数据筛选、数据清洗和链式调用

DeepSeek:全栈开发者视角下的AI革命者

TreeSize:免费的磁盘清理与管理神器,解决C盘爆满的燃眉之急

通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能

高效工作流:用Mermaid绘制你的专属流程图;如何在Vue3中导入mermaid绘制流程图

通过MongoDB Atlas 实现语义搜索与 RAG------迈向AI的搜索机制

【前端实战】如何让用户回到上次阅读的位置?

前端实战:基于Vue3与免费满血版DeepSeek实现无限滚动+懒加载+瀑布流模块及优化策略

深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解

el-table实现动态数据的实时排序,一篇文章讲清楚elementui的表格排序功能

JavaScript双问号操作符(??)详解,解决使用 || 时因类型转换带来的问题

内存泄漏------海量数据背后隐藏的项目生产环境崩溃风险!如何避免内存泄漏

MutationObserver详解+案例------深入理解 JavaScript 中的 MutationObserver

JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、DOM操作等

相关推荐
C++业余爱好者2 小时前
Java 中的数据结构详解及应用场景
java·数据结构·python
龙吟游戏2 小时前
Ubuntu Server 25.10安装
linux·运维·ubuntu
zzxxlty2 小时前
windows 迁移ubuntu wsl从C盘到D盘
linux·运维·ubuntu
顧棟2 小时前
JAVA、SCALA 与尾递归
java·开发语言·scala
liguojun20252 小时前
智慧破局:重构体育场馆的运营与体验新生态
java·大数据·人工智能·物联网·重构·1024程序员节
码农阿豪2 小时前
解锁京东LOC本地化订单管理新体验:全自动卡密发码核销解决方案
java·开发语言
小尧嵌入式2 小时前
深入理解C/C++指针
java·c语言·开发语言·c++·qt·音视频
21992 小时前
Embabel:JVM上的AI Agent框架深度技术分析
java·jvm·人工智能·spring·ai·开源
梦想的旅途22 小时前
Hook技术与内存注入在企业微信外部群数据获取中的技术与风险分析
linux·运维·服务器