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 复制,无需破坏原目录
可靠性 高,可随时回滚
安全性 原数据保留,风险低
适用场景 加新磁盘,空间扩容
相关推荐
牛奶咖啡1319 分钟前
Docker容器实践——docker数据管理、网络与容器互联
docker·容器·docker容器互联·docker数据卷·docker挂载主机目录·docker的网络·数据卷与挂载主机目录的数据规则
Mr.王8359 小时前
Kubernetes宿主机本地盘池化管理
ceph·云原生·容器·kubernetes
岳来14 小时前
docker network 命令学习
docker·docker network
老王熬夜敲代码15 小时前
接入Docker隔离测试
docker·容器·langchain
张32316 小时前
K8s存储卷入门
云原生·kubernetes
MGS浪疯17 小时前
让 QClaw 将复杂的 Docker 项目转为 exe!
运维·docker·容器
钝挫力PROGRAMER18 小时前
关于软件架构的一些疑惑
微服务·云原生·架构
.柒宇.18 小时前
docker容器技术实战
运维·docker·容器
倔强的胖蚂蚁18 小时前
信创企业级 openEuler 24 部署 docker-ce 全指南
运维·docker·云原生·容器
Mark White19 小时前
深入理解 Linux 打印体系:CUPS、驱动、ULD 与 Docker 容器化
linux·运维·docker