win10使用WSL 2运行Docker Desktop,运行文件从C盘迁移到其他目录

高版本win10和docker中,Docker Desktop默认用WLS 2运行。启用WSL后,docker运行数据在WSL发行版中,文件位置由WSL管理,运行数据和镜像文件存于C盘,对空间紧张者不友好。本文介绍了将docker-desktop-data发行版迁移到指定目录的方法。

参考:https://my.oschina.net/u/4407103/blog/4404664

重点摘要:

高版本win10,高版本docker,Docker Desktop默认使用WLS 2来运行,而不是以前的Hyper-V。

docker里面以前设置镜像位置的功能不见了,原因:启用WSL后,docker运行数据都在WSL发行版中,文件位置都只能由WSL管理!

安装docker后,docker会自动创建2个发行版,使用命令 wsl -l -v 查看

docker-desktop
docker-desktop-data

WSL发行版默认都是安装在C盘,在%LOCALAPPDATA%/Docker/wsl目录
docker的运行数据、镜像文件都存在%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx中,这对C盘空间紧张的人非常不友好。。。

WSL发行版迁移

首先关闭docker

关闭所有发行版:
wsl --shutdown

将docker-desktop-data导出到D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar(注意,原有的docker images不会一起导出)
wsl --export docker-desktop-data D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar

注销docker-desktop-data:
wsl --unregister docker-desktop-data

重新导入docker-desktop-data到要存放的文件夹:D:\SoftwareData\wsl\docker-desktop-data\:
wsl --import docker-desktop-data D:\SoftwareData\wsl\docker-desktop-data\ D:\SoftwareData\wsl\docker-desktop-data\docker-desktop-data.tar --version 2

只需要迁移docker-desktop-data一个发行版就行,另外一个不用管,它占用空间很小。

完成以上操作后,原来的%LOCALAPPDATA%/Docker/wsl/data/ext4.vhdx就迁移到新目录了

<think>根据用户需求,用户希望将Docker软件从C迁移到D。结合引用[1]和引用[2]的信息,主要方法是通过创建符号链接(mklink)将CDocker相关目录映射到D。同时引用[2]特别强调不要通过Docker设置修改位置,而是使用wsl命令迁移。 步骤总结如下: 1. 停止DockerWSL相关服务 2. 备份数据(重要) 3. 在D创建目标文件夹结构 4. 迁移现有数据(如果已安装) 5. 删除C目录迁移后) 6. 创建符号链接 7. 重启Docker 具体步骤: 1. **停止相关服务**: - 退出Docker Desktop - 在PowerShell(管理员)执行:`wsl --shutdown` 2. **备份数据**:复制整个`C:\Users\<用户名>\AppData\Local\Docker`目录到安全位置。 3. **在D创建文件夹**(示例路径为`D:\Docker`): ``` D:\Docker ├─Local │ ├─Docker │ └─wsl ├─Roaming │ └─Docker └─Docker # 用于映射C:\Program Files\Docker ``` 4. **迁移现有数据**(若已安装): - 将`C:\Program Files\Docker`内容复制到`D:\Docker\Docker` - 将`C:\Users\<用户名>\AppData\Local\Docker`复制到`D:\Docker\Local\Docker` - 将`C:\Users\<用户名>\AppData\Local\wsl`复制到`D:\Docker\Local\wsl` - 将`C:\Users\<用户名>\AppData\Roaming\Docker`复制到`D:\Docker\Roaming\Docker` 5. **删除目录**(确保数据复制无误后): 手动删除上述C的四个文件夹。 6. **创建符号链接**(管理员权限打开cmd): ```cmd mklink /J "C:\Program Files\Docker" "D:\Docker\Docker" mklink /J "C:\Users\<用户名>\AppData\Local\Docker" "D:\Docker\Local\Docker" mklink /J "C:\Users\<用户名>\AppData\Local\wsl" "D:\Docker\Local\wsl" mklink /J "C:\Users\<用户名>\AppData\Roaming\Docker" "D:\Docker\Roaming\Docker" ``` 7. **重启电脑并启动Docker**。 注意事项: - 符号链接创建后,所有读写操作实际发生在D - 若迁移Docker无法启动,检查wsl状态:`wsl -l -v` - 引用[2]提到镜像存储在wsl目录,需确保`wsl`目录迁移完整[^2] 相关问题: 1. 如何验证Docker迁移后是否正常工作? 2. 迁移后如何清理C残留文件? 3. 除了符号链接,还有其他迁移Docker的方法吗? </think>### 将Docker从C迁移到D的完整步骤 #### 核心理 通过**符号链接(mklink)** 将CDocker目录映射到D,实现存储空间的转移。关键操作包括: 1. 创建D目录结构 2. 迁移现有数据 3. 删除C目录 4. 建立符号链接 #### 详细步骤(Windows系统) 1. **停止Docker服务**: - 退出Docker Desktop - 管理员权限打开PowerShell运行: ```powershell wsl --shutdown ``` 2. **创建D目录结构**: ```bash D:\Docker ├─Docker # 映射 C:\Program Files\Docker ├─Local │ ├─Docker # 映射 C:\Users\<用户名>\AppData\Local\Docker │ └─wsl # 映射 C:\Users\<用户名>\AppData\Local\wsl └─Roaming └─Docker # 映射 C:\Users\<用户名>\AppData\Roaming\Docker ``` 3. **迁移现有数据**(若已安装): - 复制 `C:\Program Files\Docker` → `D:\Docker\Docker` - 复制 `C:\Users\<用户名>\AppData\Local\Docker` → `D:\Docker\Local\Docker` - 复制 `C:\Users\<用户名>\AppData\Local\wsl` → `D:\Docker\Local\wsl`(包含镜像和容器数据[^2]) - 复制 `C:\Users\<用户名>\AppData\Roaming\Docker` → `D:\Docker\Roaming\Docker` 4. **删除C目录**(确保数据复制无误后): - 手动删除上述4个C目录 5. **创建符号链接**(管理员权限运行CMD): ```cmd mklink /J "C:\Program Files\Docker" "D:\Docker\Docker" mklink /J "C:\Users\<用户名>\AppData\Local\Docker" "D:\Docker\Local\Docker" mklink /J "C:\Users\<用户名>\AppData\Local\wsl" "D:\Docker\Local\wsl" mklink /J "C:\Users\<用户名>\AppData\Roaming\Docker" "D:\Docker\Roaming\Docker" ``` 6. **重启服务**: - 重新启动Docker Desktop - 检查存储位置:运行 `docker info` 查看 `Docker Root Dir` #### ⚠️ 重要注意事项 1. **必须通过符号链接迁移**:直接在Docker设置中修改路径可能导致WSL子系统崩溃[^2] 2. **用户名替换**:上述命令中的 `<用户名>` 需替换为实际用户名(如Administrator) 3. **权限要求**:所有操作需在**管理员权限**下执行 4. **数据安全**:建议操作前备份 `wsl` 目录(包含所有镜像和容器数据) #### 验证迁移成功 1. 在D查看文件更新日期是否变化 2. 运行测试容器: ```bash docker run hello-world ``` 3. 检查C目录属性:应显示为"链接"而非普通文件夹 --- ### 相关问题 1. 迁移Docker无法启动该如何排查? 2. 如何将WSL子系统整体迁移到其他磁? 3. 符号链接(mklink)和快捷方式有什么区别? 4. 除了Docker,哪些Windows软件需要通过符号链接迁移
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值