1️⃣ 背景

系统原本 / 系统盘 39G,已用 34G → Docker 数据目录 /var/lib/docker 占用大量空间

Docker 镜像和容器存储过大,导致无法加载新镜像(例如 ubuntu/squid:latest)

目标:将 Docker 数据目录迁移到大容量数据盘 /data,保持 Dify 正常运行

2️⃣ 检查系统空间

df -h

输出示例:

/dev/mapper/klas-root     39G   34G  4.3G  89% /
/dev/sdb1                1007G  73G  883G  8% /data

/data 是大容量盘 → 迁移 Docker 数据的目标

/var/lib/docker 在小系统盘 → 迁移前会爆盘

3️⃣ 原始 mv 操作问题

mv /var/lib/docker/* /data/docker/

出现错误:

mv: overwrite '/data/docker/overlay2'?

原因:第一次 mv 已经部分传输,第二次 mv 发现目标已有文件

Ctrl+C 中断 → 迁移不完整

4️⃣ 确认迁移是否在进行
方法 1:观察目录大小

watch -n1 "du -sh /data/docker"

如果数字在不断增加 → 正在传输

如果不动 → 迁移完成或卡住

方法 2:用 rsync 安全迁移

rsync -avh --progress /var/lib/docker/ /data/docker/

支持中断续传

显示实时进度

不会重复覆盖已经复制好的文件

传输完成后 to-chk=0 → 迁移成功

5️⃣ 迁移完成后配置 Docker 使用新目录

修改 /etc/docker/daemon.json:

{
  "data-root": "/data/docker",
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn/",
    "https://hub-mirror.163.com/",
    ...
  ]
}

停止 Docker 服务:

systemctl stop docker
systemctl stop containerd

可选:备份旧目录

mv /var/lib/docker /var/lib/docker.bak

创建软链接(保证旧路径可用):

ln -s /data/docker /var/lib/docker

启动 Docker:

systemctl start docker

检查 Docker 是否使用新目录:

docker info | grep "Docker Root Dir"

更多推荐