当前位置: 首页 > news >正文

【笔记】 Docker目录迁移脚本

免责声明

  1. 本脚本仅为 Docker 目录迁移提供技术参考,使用者需确保完全理解脚本执行逻辑及潜在风险,因操作不当导致的数据丢失、系统故障等问题,脚本作者及提供方不承担任何责任。
  2. 脚本涉及系统目录删除与符号链接创建,可能影响系统稳定性,建议先在非生产环境测试,正式使用前务必完成数据及镜像备份(脚本中的备份操作需手动确认有效性)。
  3. 使用者需自行核对脚本中的路径配置(如用户名、磁盘路径等),因路径错误导致的操作异常,由使用者自行承担后果。
  4. 脚本运行需管理员权限,若因权限问题导致的系统安全风险,与脚本作者无关。
  5. 本脚本不保证适配所有系统环境及 Docker 版本,使用者需根据实际情况调整或寻求专业技术支持,使用即视为同意自行承担全部风险。

 

记一次不太顺利的Docker重装_docker 4.40.0-CSDN博客 

 


一、前置准备

(一)关闭 Docker 程序

  1. 任务栏右下角找到 Docker 图标 → 右键 → Quit Docker Desktop,确保完全退出。
  2. 任务管理器(Ctrl + Shift + Esc)→ 结束所有 Docker 相关进程(如 Docker Desktop Service)。

(二)环境确认

  1. 管理员身份运行 CMD(开始菜单搜 CMD → 右键以管理员身份运行)。
  2. 确认路径:
    • 备份路径:E:\Downloads\Other(需存在,不存在则手动创建文件夹)。
    • 目标路径:D:\Program(需存在,不存在则手动创建文件夹)。

二、手动步骤(严格对齐路径)

路径配置说明

类型原始路径目标存储路径备份路径
.docker目录C:\Users\love\.dockerD:\Program\.dockerE:\Downloads\Other\.docker
镜像目录C:\Users\love\AppData\Local\DockerD:\Program\DockerE:\Downloads\Other\Docker

 

 

🚀 详细执行步骤(按脚本流程)

 

(一)步骤 1:备份 Docker 目录

1. 备份 .docker 目录(用户配置)

robocopy "C:\Users\love\.docker" "E:\Downloads\Other\.docker" /E

  • 作用:复制 C:\Users\love\.docker(用户配置)到 E:\Downloads\Other\.docker
  • 验证:检查 E:\Downloads\Other\.docker 目录,确认文件完整。
2. 备份 Docker 镜像目录(核心数据)

robocopy "C:\Users\love\AppData\Local\Docker" "E:\Downloads\Other\Docker" /E

  • 作用:复制 C:\Users\love\AppData\Local\Docker(镜像、容器数据)到 E:\Downloads\Other\Docker
  • 验证:检查 E:\Downloads\Other\Docker 目录,确认数据完整。

 

(二)步骤 2:删除原目录(释放路径)

1. 删除原 .docker 目录

rmdir /s /q "C:\Users\love\.docker"

  • 参数/s 递归删除,/q 静默执行(无确认提示)。
2. 删除原 Docker 镜像目录

rmdir /s /q "C:\Users\love\AppData\Local\Docker"

 

(三)步骤 3:创建目标存储目录(空目录,为链接做准备)

mkdir "D:\Program\.docker"
mkdir "D:\Program\Docker"

  • 作用:在 D:\Program 下创建与原目录同名的空文件夹,用于存储迁移后的数据。 

 

(四)步骤 4:创建符号链接(映射原路径到新目标)

1. 链接 .docker 目录

mklink /J "C:\Users\love\.docker" "D:\Program\.docker"

  • 作用:让 C:\Users\love\.docker 实际指向 D:\Program\.docker(系统级目录链接)。
2. 链接 Docker 镜像目录

mklink /J "C:\Users\love\AppData\Local\Docker" "D:\Program\Docker"

 

 

(五)步骤 5:恢复备份数据到新目标

1. 恢复 .docker 备份

robocopy "E:\Downloads\Other\.docker" "D:\Program\.docker" /E
2. 恢复 Docker 镜像备份

robocopy "E:\Downloads\Other\Docker" "D:\Program\Docker" /E

三、收尾验证

  1. 重启电脑:确保系统加载新的符号链接配置。
  2. 启动 Docker:打开 Docker Desktop,检查是否正常加载镜像 / 容器。
  3. 数据校验
    • 运行测试容器:docker run hello-world,观察是否正常执行。
    • 检查目标路径:D:\Program\.docker 和 D:\Program\Docker,确认数据写入正常。

 

四、自动化脚本

(一)创建批处理文件
  1. 打开记事本(在开始菜单搜索 “记事本” 并打开 )。
  2. 将完整的脚本内容(如下,根据实际需求确认参数 )复制粘贴到记事本中:
@echo off
echo ====== Docker目录迁移自动化脚本 ======
echo 警告:请确保已以管理员身份运行此脚本!
echo 注意:请先停止Docker Desktop再继续执行!
echo 按任意键开始执行...
pause:: 配置参数(请根据实际情况修改)
set "USERNAME=love"
set "SRC_DOCKER_CONFIG=C:\Users\%USERNAME%\.docker"
set "SRC_DOCKER_DATA=C:\Users\%USERNAME%\AppData\Local\Docker"
set "BACKUP_DIR=E:\Downloads\Other"
set "DEST_BASE=D:\Program"
set "DEST_DOCKER_CONFIG=%DEST_BASE%\.docker"
set "DEST_DOCKER_DATA=%DEST_BASE%\Docker":: 步骤1:创建备份目录(若不存在)
echo ---------- 步骤1:准备备份目录 ----------
if not exist "%BACKUP_DIR%" mkdir "%BACKUP_DIR%"
echo 备份目录已准备:%BACKUP_DIR%:: 步骤2:备份原始目录
echo ---------- 步骤2:备份原始目录 ----------
echo 正在备份.docker配置目录...
robocopy "%SRC_DOCKER_CONFIG%" "%BACKUP_DIR%\.docker" /E
echo 正在备份Docker镜像数据目录...
robocopy "%SRC_DOCKER_DATA%" "%BACKUP_DIR%\Docker" /E
echo 备份完成!路径:%BACKUP_DIR%:: 步骤3:创建目标目录(确保目录结构正确)
echo ---------- 步骤3:创建目标目录 ----------
if not exist "%DEST_BASE%" mkdir "%DEST_BASE%"
mkdir "%DEST_DOCKER_CONFIG%"
mkdir "%DEST_DOCKER_DATA%"
echo 目标目录已创建:%DEST_BASE%:: 步骤4:删除源目录(释放路径)
echo ---------- 步骤4:删除源目录 ----------
rmdir /s /q "%SRC_DOCKER_CONFIG%" 2>nul
rmdir /s /q "%SRC_DOCKER_DATA%" 2>nul
echo 源目录已删除(如有错误已忽略):: 步骤5:创建符号链接
echo ---------- 步骤5:创建符号链接 ----------
mklink /J "%SRC_DOCKER_CONFIG%" "%DEST_DOCKER_CONFIG%"
mklink /J "%SRC_DOCKER_DATA%" "%DEST_DOCKER_DATA%"
echo 符号链接创建完成!:: 步骤6:恢复备份数据到新目标
echo ---------- 步骤6:恢复备份数据 ----------
echo 正在恢复.docker配置...
robocopy "%BACKUP_DIR%\.docker" "%DEST_DOCKER_CONFIG%" /E
echo 正在恢复Docker镜像数据...
robocopy "%BACKUP_DIR%\Docker" "%DEST_DOCKER_DATA%" /E
echo 数据恢复完成!echo ====== 所有操作已完成 ======
echo 请重启电脑后再启动Docker Desktop
echo 按任意键退出...
pause

  1. 点击记事本左上角 “文件”→“另存为” 。
  2. 在 “另存为” 窗口中:
    • 选择保存位置(比如桌面 );
    • “文件名” 输入类似 docker_migrate.bat(必须以 .bat 为后缀 );
    • “保存类型” 选 “所有文件” ,然后点击 “保存” 。
(二)运行批处理文件
  1. 找到保存的 docker_migrate.bat 文件(比如在桌面 )。
  2. 右键点击该文件,选择 “以管理员身份运行” (必须管理员权限,否则可能因权限不足执行失败 )。
  3. 此时会弹出命令提示符窗口,按提示先停止 Docker Desktop,然后按任意键,脚本就会按流程逐步执行,后续每一步的 pause 也能正常响应,按回车继续下一步。
(二)使用说明
  1. 修改配置参数

    • 打开脚本,修改 USERNAME 为您的实际用户名
    • 若需更改存储路径,修改 DEST_BASE 变量
    • 修改其他符合自己配置的参数
  2. 执行前准备

    • 停止 Docker Desktop
    • 确保备份磁盘(E 盘)有足够空间
    • 以管理员身份运行脚本
  3. 执行后验证

    • 重启电脑
    • 启动 Docker Desktop
    • 运行 docker info 检查数据路径
    • 测试创建容器确认功能正常

如需调整特定步骤,可直接修改对应部分的代码。

这样就能让脚本按设计的自动化流程完整执行,解决当前按回车无法继续的问题啦,执行过程中留意命令提示符里的提示信息,若遇到报错(如路径不存在、权限不足等 ),可根据提示排查调整。

五、补充说明

操作涉及系统目录删除和符号链接,可能因环境差异(权限、Docker 版本等)导致数据丢失。执行前务必确认备份完整,建议先在测试环境验证。因操作不当引发的问题,本文不承担责任,请谨慎操作。

按照这个流程,每一步严格对齐我们的路径需求,确保 .docker 和 Docker 目录独立迁移,避免混淆。如果执行中遇到报错(如权限、文件占用),可以补充具体错误信息进一步排查~

 

 

 

相关文章:

  • centos指令
  • 现代串口通讯UI框架性能对比
  • 机器人磁性夹具如何选?IXTUR气控永磁铁 MAP/MRP/LI-120系列负载能力与适用场景解析
  • 开源项目推荐:MCP Registry——管理MCP服务器的利器
  • Vue.js 中的 v-model 和 :value:理解父子组件的数据绑定
  • Python 可迭代的对象、迭代器 和生成器(何时使用生成器表达式)
  • Linux基本指令篇 —— more指令
  • Linu压缩解压
  • 平台组成-报表平台
  • 从台式电脑硬件架构看前后端分离开发模式
  • FPGA设计的用户约束
  • 基于微信小程序的旅游景点推荐设计与实现
  • PG靶机复现 Squid
  • ARM64 linux系统的一般执行过程
  • ​​Git提交代码Commit消息企业级规范
  • Qwen VLo :一个多模态统一理解与生成模型
  • PICkit3编程器MCLR引脚全解析
  • 汇总表支持表头分组,查询组件查询框可以调整高度,DataEase开源BI工具v2.10.11 LTS版本发布
  • 面向对象Plus(2/2)
  • 鸿蒙 SideBarContainer 开发攻略:侧边栏交互设计与多端适配