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 复制,无需破坏原目录
可靠性 高,可随时回滚
安全性 原数据保留,风险低
适用场景 加新磁盘,空间扩容
相关推荐
老马啸西风2 小时前
windows wsl2-05-docker 安装笔记
运维·windows·笔记·docker·容器·k8s
老马啸西风2 小时前
windows docker-02-docker 最常用的命令汇总
linux·运维·ubuntu·docker·容器·eureka·maven
cherishSpring4 小时前
Eureka服务端启动
云原生·eureka
慢慢慢时光5 小时前
本地k8s集群的搭建
云原生·容器·kubernetes
橘子编程5 小时前
Kubernetes (K8S)知识详解
云原生·容器·kubernetes
风清再凯6 小时前
prometheus 黑盒监控和docker检测
docker·容器·prometheus
观无7 小时前
基于Eureka和restTemple的负载均衡
云原生·eureka·负载均衡
跑不完的脚本8 小时前
基于K8s ingress灰度发布配置
docker·云原生·容器·kubernetes
阿杰技术9 小时前
Docker Compose 配置
运维·docker·容器
阿里云云原生10 小时前
百万 TPS 服务发布无感知!详解轻量消息队列无损发布实践
云原生·消息队列