windows docker 存储迁移(C盘磁盘满)

本文介绍了如何在WindowsDocker磁盘空间紧张时,通过停止服务、移动数据、创建符号链接等步骤,安全地将Docker文件夹迁移到新位置,同时提醒操作前备份数据和注意权限问题。
该文章已生成可运行项目,

通常在安装的windows docker ,默认在C:\Program Files\Docker,,镜像增多之后,会发现磁盘不够,别担心,下面来个无脑迁移操作。

1:停止Docker服务。你可以在命令提示符(cmd)中输入以下命令

net stop com.docker.service

2:移动C:\ProgramData\Docker到新的位置。例如,如果你想把它移到D:\Docker,你可以使用如下命令:

robocopy /mir C:\ProgramData\Docker D:\Docker

3:然后,删除原来的目录:

rmdir /s C:\ProgramData\Docker

4:创建一个指向新位置的符号链接。在cmd中输入以下命令:

mklink /D C:\ProgramData\Docker D:\Docker

5:启动Docker服务:

net start com.docker.service

这个过程会将整个Docker文件夹(包括你的镜像和容器)移动到新的位置。你需要确保在这个过程中有足够的磁盘空间,以及你拥有必要的权限。

请注意,此操作具有一定风险,因此在进行操作之前,建议备份相关数据和配置。

本文章已经生成可运行项目
<think>根据用户需求,用户希望将Docker软件从C迁移到D。结合引用[1]和引用[2]的信息,主要方法是通过创建符号链接(mklink)将CDocker相关目录映射到D。同时引用[2]特别强调不要通过Docker设置修改位置,而是使用wsl命令迁移。 步骤总结如下: 1. 停止Docker和WSL相关服务 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
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值