操作系统:ubuntu 24.04
docker版本:docker-ce 28.1.1
目标:将/var/lib/docker 的数据迁移到/data/docker
- 停止docker
sudo systemctl stop docker.socket
sudo systemctl stop docker
这个步骤一定要做,否则容易导致数据不一致。
- rsync数据迁移
sudo mkdir -p /data/docker
sudo rsync -avzP /var/lib/docker/ /data/docker
说明:
- 安全,保留文件属性和权限(-a 参数),很多迁移的方案后看不到镜像和容器的愿意就是文件属性和权限不一致导致。
- 增量同步,支持断点续传(-P参数)
- 修改配置
sudo vim /etc/docker/daemon.json
添加关键参数 data-root
,重新指向新的地址
{"data-root":"/data/docker"
}
- 重启docker服务
sudo systemctl start docker.socket
sudo systemctl start docker
- 备份
sudo mv /var/lib/docker var/lib/docker.bak
- 查看容器和镜像
sudo docker ps -a
如果能看到原来
的镜像和容器就表明没有问题。
- 删除备份
sudo rm /var/lib/docker -rf
第6步检查完成后即可删除旧文件,腾出空间了。