Docker Desktop安装与迁移D盘完整教程

前言

很多小伙伴安装 Docker Desktop 时,默认会装到 C 盘,而且 WSL2 的镜像、容器数据也默认存在 C 盘,很快就会把 C 盘占满。本文详细介绍全新安装时指定 D 盘 + WSL2 数据完整迁移的完整流程,包含所有常见报错的解决方案。


一、全新安装 Docker Desktop 到 D 盘(官方支持方法)

Docker Desktop 安装程序默认没有图形化路径选择,但可以通过命令行参数指定安装目录。

1.1 准备工作

  1. Docker 官网下载最新版安装包

  2. 或者网盘链接:通过网盘分享的文件:Docker Desktop Installer.exe
    链接: https://pan.baidu.com/s/1E8sOyEFzELzti4YYQDvnHQ?pwd=vdck 提取码: vdck
    –来自百度网盘超级会员v6的分享

  3. 记住安装包下载路径(通常在Downloads文件夹)

  4. 提前在 D 盘创建安装目录:D:\Docker

1.2 命令行安装(核心步骤)

  1. 以管理员身份打开 PowerShell

  2. 切换到安装包所在目录:

cd "C:\Users\你的用户名\Downloads"
  1. 执行安装命令(直接复制)
& ".\Docker Desktop Installer.exe" install --accept-license --installation-dir="D:\Docker"

⚠️ 注意:

  • 如果安装包文件名带加号(如Docker+Desktop+Installer.exe),请对应修改文件名

  • &是 PowerShell 调用运算符,专门处理带空格的文件名

  • 路径必须用英文双引号包裹

1.3 安装完成

等待提示Installation succeeded即安装成功,此时 Docker 主程序已经安装在D:\Docker目录。


二、WSL2 数据目录迁移(必做!释放 C 盘空间)

⚠️ 重点提醒:即使程序安装在 D 盘,Docker 的镜像、容器、数据卷默认仍存在 C 盘!必须单独迁移 WSL2 数据目录,这才是占用 C 盘空间的大头。

2.1 迁移前置条件

  1. Docker Desktop 已经安装完成

  2. 打开一次 Docker Desktop,等待初始化完成(生成 WSL 实例)

  3. 完全关闭 Docker Desktop(右键右下角图标→退出)

2.2 完整迁移步骤

管理员 PowerShell 逐条执行:

步骤 1:关闭所有 WSL 实例
wsl --shutdown
步骤 2:查看已存在的 WSL 发行版
wsl --list --verbose

正常应该看到两个发行版:

  • docker-desktop

  • docker-desktop-data

步骤 3:导出原有 WSL 数据到 D 盘
wsl --export docker-desktop-data "D:\Docker\wsl_backup.tar"
步骤 4:注销 C 盘原有数据
wsl --unregister docker-desktop-data
步骤 5:导入数据到 D 盘新目录

提前在 D 盘创建文件夹:D:\Docker\wsl-data

wsl --import docker-desktop-data "D:\Docker\wsl-data" "D:\Docker\wsl_backup.tar" --version 2
步骤 6:(可选)删除备份文件释放空间

确认 Docker 正常运行后,删除备份文件:

Remove-Item "D:\Docker\wsl_backup.tar"

三、微软商店 Ubuntu 迁移到 D 盘(通用 WSL 迁移方法)

从微软商店安装的 Ubuntu 默认也安装在 C 盘,同样可以通过 WSL 的导出导入机制迁移到 D 盘,方法与 Docker 迁移完全一致。

3.1 迁移前置条件

  1. 已从微软商店安装 Ubuntu 并完成初始化

  2. 关闭所有 Ubuntu 终端窗口

  3. 提前在 D 盘创建目录:D:\WSL\Ubuntu

3.2 完整迁移步骤

管理员 PowerShell 逐条执行:

步骤 1:关闭所有 WSL 实例
wsl --shutdown
步骤 2:查看 Ubuntu 发行版名称
wsl --list --verbose

常见名称:UbuntuUbuntu-22.04Ubuntu-24.04,记住你的发行版名称

步骤 3:导出 Ubuntu 系统到 D 盘
# 替换成你的发行版名称
wsl --export Ubuntu "D:\WSL\ubuntu_backup.tar"
步骤 4:注销 C 盘原有 Ubuntu
# 替换成你的发行版名称
wsl --unregister Ubuntu
步骤 5:导入 Ubuntu 到 D 盘新目录
# 替换成你的发行版名称
wsl --import Ubuntu "D:\WSL\Ubuntu" "D:\WSL\ubuntu_backup.tar" --version 2
步骤 6:设置默认登录用户(重要!)

微软商店安装的 Ubuntu 迁移后默认会变成 root 登录,需要重新设置默认用户:

# 进入Ubuntu
wsl -d Ubuntu

# 在Ubuntu终端内执行(替换成你的用户名)
echo -e "[user]\ndefault=你的用户名" > /etc/wsl.conf

# 退出Ubuntu
exit

# 重启WSL生效
wsl --shutdown
步骤 7:(可选)删除备份文件
Remove-Item "D:\WSL\ubuntu_backup.tar"

3.3 迁移验证

  1. 打开 Ubuntu 终端,确认文件、配置、软件都完整保留

  2. 查看 D 盘D:\WSL\Ubuntu目录下已生成 ext4.vhdx 数据文件

  3. 微软商店的 Ubuntu 图标仍可正常点击启动


四、常见报错与解决方案(全踩坑总结)

报错 1:系统找不到指定的文件

原因:安装包文件名带空格 / 加号,PowerShell 识别错误
解决:使用&运算符 + 完整引号包裹文件名:

& ".\Docker+Desktop+Installer.exe" install --accept-license --installation-dir="D:\Docker"

报错 2:WSL_E_DISTRO_NOT_FOUND 找不到分发版

原因:Docker 刚安装,还没启动过,WSL 实例未生成
解决

  1. 打开 Docker Desktop,等待完全启动初始化

  2. 关闭 Docker Desktop 后再执行迁移命令


报错 3:不存在或未被停止

原因:Docker 后台进程仍在运行,锁定 WSL 文件
解决:彻底终止所有 Docker 进程:

taskkill /F /IM "Docker Desktop.exe"
taskkill /F /IM "com.docker.backend.exe"
wsl --shutdown
Start-Sleep -Seconds 5

再重新执行迁移命令


报错 4:Wsl/Service/0x80070032 参考的对象类型不支持尝试的操作

原因:WSL 网络组件异常
解决(90% 概率解决):

# 管理员PowerShell执行
netsh winsock reset
# 重启电脑
shutdown /r /t 0

报错 5:服务名无效 LxssManager

原因:Win11 新版本已弃用 LxssManager 服务
解决:忽略此错误,直接执行上面的netsh winsock reset方案即可


五、验证迁移成功

  1. 打开 Docker Desktop,等待正常启动

  2. 拉取一个测试镜像验证:

docker pull hello-world
docker run hello-world
  1. 查看 D 盘空间占用:D:\Docker\wsl-data目录下的 ext4.vhdx 文件就是 WSL 数据文件

六、后续优化建议

  1. 设置中文界面:Docker 设置→General→User interface language→选择简体中文→重启

  2. 限制 WSL 内存占用:在用户目录C:\Users\用户名下创建.wslconfig文件:

[wsl2]
memory=4GB
processors=4
swap=2GB
  1. 定期清理 Docker 无用镜像:
docker system prune -a

总结

  1. ✅ Docker 主程序:通过--installation-dir参数安装到 D 盘

  2. ✅ Docker WSL2 数据:通过导出 - 注销 - 导入迁移到 D 盘

  3. ✅ 微软商店 Ubuntu:同样通过 WSL 通用迁移方法迁移到 D 盘

  4. ✅ 常见报错:优先尝试netsh winsock reset + 重启电脑

按照本教程操作,Docker Desktop 和 Ubuntu 都将完全运行在 D 盘,不再占用 C 盘宝贵空间,所有镜像、容器、系统数据都完整保留。

(注:文档部分内容可能由 AI 生成)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐