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 复制,无需破坏原目录
可靠性 高,可随时回滚
安全性 原数据保留,风险低
适用场景 加新磁盘,空间扩容
相关推荐
o***Z4481 小时前
Docker镜像安全扫描
安全·docker·容器
l***O5202 小时前
Docker微服务
docker·微服务·容器
1***Q7842 小时前
Docker计算机视觉应用
计算机视觉·docker·容器
x***J3483 小时前
Docker数据挖掘开发
docker·容器·数据挖掘
喵手4 小时前
【探索实战】Kurator打造一栈式分布式云原生平台的实践与前瞻!
分布式·云原生·kurator·云原生平台
晨晖24 小时前
nginx和docker
docker
三朝看客4 小时前
docker版nacos连接mysql8异常处理 No DataSource set!
运维·docker·容器
sleP4o4 小时前
Windows 11 24H2 配置WSL2 + Docker
windows·docker·容器
编码追梦人4 小时前
【探索实战】Kurator:开启分布式云原生之旅
分布式·云原生
张较瘦_5 小时前
Windows Docker使用实战教程
windows·docker·容器