Docker如何迁移数据目录

Docker如何迁移数据目录

在生产或开发环境中,随着容器数量和数据量增长,Docker 默认的数据目录(/var/lib/docker)可能会占满系统盘。为了解决存储压力,可以将 Docker 的数据目录迁移到新的位置(例如 /data/docker)。


🎯 目标

  • Docker 默认数据目录 /var/lib/docker 迁移到新路径(如 /data/docker
  • 停机一次性迁移,保证容器与镜像数据完整

⚙️ 操作步骤

1️⃣ 创建新目录

sudo mkdir -p /data/docker
sudo chown root:root /data/docker

/data/docker 这个目录是迁移的目标目录


2️⃣ 停止 Docker 服务

sudo systemctl stop docker docker.socket containerd

确认状态:

systemctl status docker

状态应为:

inactive (dead)
Docker如何迁移数据目录

3️⃣ 同步数据到新目录

使用 rsync 保留所有文件属性:

sudo rsync -aHAX --delete --info=progress2 /var/lib/docker/ /data/docker/

参数说明:

  • -aHAX 保留权限、硬链接、ACL、扩展属性
  • --delete 确保源与目标目录完全一致
  • --info=progress2 显示详细进度

4️⃣ 修改 Docker 配置文件

编辑 /etc/docker/daemon.json(如不存在则新建):

sudo vim /etc/docker/daemon.json

如果不会使用vim文本编辑器那么可以使用宝塔的文件功能找到此文件双击编辑

Docker如何迁移数据目录

添加或修改:

{
 "data-root": "/data/docker"
}

5️⃣ 启动 Docker 服务

sudo systemctl daemon-reload
sudo systemctl start containerd
sudo systemctl start docker

6️⃣ 验证迁移结果

docker info | grep "Docker Root Dir"

预期输出:

Docker Root Dir: /data/docker

进一步确认容器与镜像:

docker ps -a
docker images

7️⃣ 清理旧目录(确认无误后)

sudo mv /var/lib/docker /data/docker.bak
# 观察几天确认稳定后再删除
sudo rm -rf /data/docker.bak

🧩 附加说明

SELinux 环境 如果系统启用 SELinux,需要调整安全上下文:

sudo semanage fcontext -a -e /var/lib/docker /data/docker
sudo restorecon -R /data/docker

排查启动问题 如果 Docker 无法启动,查看日志:

journalctl -u docker -xe

常见原因是权限或 SELinux 标签配置不当。


✅ 至此,Docker 数据目录已成功迁移到 /data/docker

云服务器

CDN与SCDN的介绍与说明

2025-11-18 23:19:48

Linux运维

Linux 如何高效清空文件

2025-11-17 15:15:04

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索