Docker 从 C 盘迁移到 D 盘使用教程(Windows + WSL2 + Docker Desktop)

一、适用场景

这份教程适合下面这种情况:

  • 系统是 Windows 10/11
  • 使用的是 Docker Desktop
  • 后端是 WSL2
  • 想把 Docker 的数据盘从 C 盘迁移到 D 盘
  • 目标路径类似:D:\ProgramData\Docker\DockerDesktopWSL

这份方法是 官方支持的稳定方案 ,不使用软链接,不手动剪切 wsl 文件夹。


二、先说结论

Docker Desktop 在 WSL2 模式下,真正占空间的核心数据一般在:

makefile 复制代码
C:\Users\你的用户名\AppData\Local\Docker\wsl

这里面通常会有一个很大的虚拟磁盘文件,用来保存:

  • 镜像
  • 容器
  • 构建缓存

正确迁移方式不是手动移动文件夹,而是:

  1. 打开 Docker Desktop
  2. 进入 Settings -> Resources -> Advanced
  3. 修改 Disk image location
  4. 选择 D 盘目标目录
  5. 点击 Apply & Restart
  6. 在弹窗里点击 Yes, move it

三、不要这样做

下面这些做法不推荐。

1. 不要手动剪切 wsl 文件夹

不要把:

makefile 复制代码
C:\Users\你的用户名\AppData\Local\Docker\wsl

直接剪切到 D 盘。

原因:

  • 这是 Docker 和 WSL 共同管理的数据目录
  • 里面有虚拟磁盘文件,不是普通文件夹
  • 手动移动容易导致 Docker 启动异常、数据损坏或路径失效

2. 不要用符号链接代替迁移

例如这类做法:

sql 复制代码
New-Item -ItemType SymbolicLink -Path "C:\Users\你的用户名\AppData\Local\Docker\wsl" -Target "D:\ProgramData\Docker\wsl"

也不推荐。

原因:

  • Docker Desktop 升级后可能失效
  • WSL 和 Windows 对链接路径处理并不总是稳定
  • 容易出现"看起来迁移了,实际上没真正迁移"的情况

四、迁移前准备

1. 确保 Docker Desktop 能正常启动

先确认 Docker 现在能用,左下角能看到:

arduino 复制代码
Engine running

2. 尽量停止正在运行的容器

在 Docker Desktop 里先停止重要容器,避免迁移时占用。

3. 准备目标目录

建议提前建好目标目录,例如:

makefile 复制代码
D:\ProgramData\Docker\DockerDesktopWSL

也可以只建到:

makefile 复制代码
D:\ProgramData\Docker

后面用 Docker Desktop 选择。


五、正式迁移步骤

第 1 步:打开 Docker Desktop

确保左下角显示:

arduino 复制代码
Engine running

第 2 步:进入设置页面

点击右上角齿轮图标,进入:

复制代码
Settings

然后点击:

rust 复制代码
Resources -> Advanced

第 3 步:找到 Disk image location

Advanced 页面中,找到:

arduino 复制代码
Disk image location

如果你当前还是默认位置,通常会在 C 盘。


第 4 步:修改为 D 盘路径

把路径改成你想存放 Docker 数据的位置,例如:

makefile 复制代码
D:\ProgramData\Docker\DockerDesktopWSL

第 5 步:点击 Apply & Restart

点击右下角:

复制代码
Apply & Restart

第 6 步:确认迁移

这时 Docker Desktop 会弹出提示:

arduino 复制代码
Move disk image?

直接点击:

arduino 复制代码
Yes, move it

这一步表示 Docker 会把当前的数据盘从 C 盘安全迁移到 D 盘。


六、迁移过程中会看到什么

迁移过程中可能出现这些现象,属于正常情况:

  • Docker Engine 暂时停止
  • 界面短暂转圈
  • 页面短时间不可操作
  • 迁移需要几十秒到几分钟

耗时取决于:

  • 当前 Docker 数据大小
  • C 盘和 D 盘的读写速度

七、迁移完成后如何验证

方法 1:看设置里的路径

再次进入:

rust 复制代码
Settings -> Resources -> Advanced

确认:

arduino 复制代码
Disk image location

已经变成:

makefile 复制代码
D:\ProgramData\Docker\DockerDesktopWSL

方法 2:看 D 盘目录

打开:

makefile 复制代码
D:\ProgramData\Docker\DockerDesktopWSL

如果迁移成功,通常会看到类似文件:

  • ext4.vhdx

这个文件就是 Docker 的核心数据盘。


方法 3:看 Docker 是否正常运行

执行命令:

复制代码
docker info

确认 Docker 正常返回信息,没有报错。


八、为什么迁移完成后 C 盘还会有 Docker 文件夹

迁移成功后,你仍然可能看到:

makefile 复制代码
C:\Users\你的用户名\AppData\Local\Docker

这通常是正常的。

因为这里还可能保留一些轻量级内容,例如:

  • 日志
  • 运行时信息
  • 配置文件
  • 锁文件

真正占空间的核心数据盘已经搬到了 D 盘,所以不用因为 C 盘还存在 Docker 文件夹而紧张。

判断重点

不是看 C 盘有没有 Docker 文件夹,而是看:

  • Disk image location 是否已经改到 D 盘
  • D 盘是否出现了 ext4.vhdx

九、如果迁移过程中出问题怎么办

情况 1:Apply 按钮是灰色

常见原因:

  • 你没有改动路径
  • Docker 还没识别到修改
  • 页面状态没刷新

解决办法:

  1. 重新选择一次目标目录
  2. 确认路径确实变化了
  3. 再点击 Apply & Restart

情况 2:Docker 一直转圈

可以尝试:

  1. 退出 Docker Desktop
  2. 在 PowerShell 执行:
arduino 复制代码
wsl --shutdown
  1. 重新打开 Docker Desktop

如果 Docker 本身能正常恢复,再重新走设置迁移流程。


情况 3:误删了 docker-desktop-data

如果之前误删或清空了 Docker 的 WSL 数据,不一定是坏事。

只要 Docker Desktop 还能正常重建并启动,仍然可以直接通过设置页修改 Disk image location,把新的数据盘放到 D 盘。


十、迁移完成后的推荐做法

迁移完成后,建议你以后项目数据也尽量放到 D 盘。

例如在 WSL / Docker 中做卷挂载时,可以使用:

bash 复制代码
-v /mnt/d/docker/mysql/data:/var/lib/mysql

说明:

  • Windows 的 D:\docker\mysql\data
  • 在 WSL 中对应的是 /mnt/d/docker/mysql/data

这样做有三个好处:

  • Docker 数据盘在 D 盘
  • 业务数据也在 D 盘
  • 更容易管理和备份

十一、推荐的目录规划

你可以参考下面这个结构:

bash 复制代码
D:\ProgramData\Docker\DockerDesktopWSL   # Docker Desktop 数据盘
D:\docker\mysql\data                     # MySQL 数据
D:\docker\mysql\conf                     # MySQL 配置
D:\docker\projects                        # 你的 compose 项目目录

十二、最终检查清单

迁移完成后,逐项检查:

  • Docker Desktop 可以正常打开
  • 左下角显示 Engine running
  • Settings -> Resources -> Advanced
  • Disk image location 已经是 D 盘路径
  • D 盘目录中已经出现 ext4.vhdx
  • docker info 可以正常执行

如果这些都满足,说明迁移已经成功。


十三、总结

Docker 从 C 盘迁移到 D 盘,最稳的方法就是:

  1. 不手动剪切 wsl 文件夹
  2. 不使用符号链接
  3. 直接用 Docker Desktop 的 Disk image location
  4. 通过 Apply & RestartYes, move it 完成官方迁移

如果你是 Windows + WSL2 + Docker Desktop 这套环境,这就是最推荐的方案。

相关推荐
武子康2 小时前
大数据-273 Spark MLib-决策树分类算法详解:ID3、C4.5、CART 与剪枝原理
大数据·后端·spark
听风者就是我2 小时前
Harness Engineering:AI Agent 时代的工程化实践
后端
用户0510122572962 小时前
FFmpeg常用命令行命令
后端
用户962377954482 小时前
原理分析 | Agent —— Tomcat 内存马
后端
Jutick2 小时前
Spring Boot WebSocket 实时行情推送实战:从断线重连到并发优化
后端·架构
Leo8992 小时前
数据结构与算法
后端
Betelgeuse762 小时前
打通 Django 认证:原生 Auth 组件实战与 API 改造
后端·python·django
ltl2 小时前
一致性哈希:不要相信教科书版本
后端
亦暖筑序2 小时前
让 AI 客服真能用的 3 个模块:情绪感知 + 意图识别 + Agent 工具链
java·人工智能·后端