Docker 数据目录迁移完整流程

🚀 Docker 数据目录迁移完整流程

适用于将 Docker 默认数据目录 /var/lib/docker 迁移到新挂载盘(如 /data/raid1),在不动原始目录的前提下安全迁移,适合生产环境部署。

🧾 场景假设

  • 原数据目录:/var/lib/docker
  • 新磁盘挂载路径:/data/raid1
  • 目标迁移路径:/data/raid1/docker

🧱 一、准备工作

复制代码
docker info | grep "Docker Root Dir"

输出:

复制代码
Docker Root Dir: /var/lib/docker

⛔ 二、停止 Docker 服务

复制代码
sudo systemctl stop docker

📦 三、复制 Docker 数据到新目录

复制代码
sudo mkdir -p /data/raid1/docker
sudo rsync -aHAXP /var/lib/docker/ /data/raid1/docker/

📘 参数解释:

参数 作用
-a 归档模式,保留所有元数据等效于 -rlptgoD
-H 保留硬链接(Docker 镜像层关键)
-A 保留 ACL 权限
-X 保留扩展属性(xattr)
-P 显示进度 + 支持断点续传

⚙️ 四、修改 Docker 配置文件

复制代码
sudo tee /etc/docker/daemon.json > /dev/null <<EOF
{
  "registry-mirrors": ["https://docker.xuanyuan.me"],
  "data-root": "/data/raid1/docker"
}
EOF

🔐 五、检查权限

复制代码
sudo chown -R root:root /data/raid1/docker
sudo chmod -R u+rwX /data/raid1/docker

🔄 六、启动 Docker

复制代码
sudo systemctl daemon-reexec
sudo systemctl start docker

🔍 七、验证迁移结果

复制代码
docker info | grep "Docker Root Dir"

docker images
docker ps -a
  • 查看目录是否生效:
  • 列出镜像和容器:

🛡 八、保留原目录以便回滚

复制代码
sudo mv /var/lib/docker /var/lib/docker.bak

🔙 九、回滚方案(如果失败)

复制代码
{
  "registry-mirrors": ["https://docker.xuanyuan.me"],
  "data-root": "/var/lib/docker"
}

sudo systemctl daemon-reexec
sudo systemctl start docker

📌 十、总结

项目 说明
迁移方式 rsync 复制,无需破坏原目录
可靠性 高,可随时回滚
安全性 原数据保留,风险低
适用场景 加新磁盘,空间扩容
相关推荐
m_1368744 分钟前
Mac Intel 芯片部署 YOLO(Docker 方式,支持离线打包与 Compose 管理)
yolo·macos·docker
喂完待续1 小时前
【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
java·spring·spring cloud·云原生·架构·big data·序列晋升
潘晓可1 小时前
Nextcloud 实战:打造属于你的私有云与在线协作平台
docker
衍余未了1 小时前
centos9 docker启动不起来,docker启动发生堵塞问题!
运维·docker·容器
我真的是大笨蛋2 小时前
K8S-基础架构
笔记·云原生·容器·kubernetes
tianyuanwo4 小时前
Docker Registry 实现原理、适用场景、常用操作及搭建详解
运维·docker·容器·registry
wdxylb5 小时前
Kubernetes实战系列(4)
云原生·容器·kubernetes
专注代码七年6 小时前
Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版 2.0
nginx·docker·容器
我真的是大笨蛋6 小时前
K8S-Pod(上)
java·云原生·容器·kubernetes
野生技术架构师7 小时前
开发微服务的9个最佳实践
微服务·云原生·架构