温馨提示×

ubuntu docker如何迁移数据

小樊
39
2025-10-01 17:32:20
栏目: 智能运维

Ubuntu Docker数据迁移详细步骤

一、迁移前的准备工作

在进行数据迁移前,需完成以下关键操作以避免数据丢失或服务异常:

  1. 停止Docker服务:确保所有容器和Docker守护进程已完全停止,防止数据不一致。
    sudo systemctl stop docker.socket # 先停止socket服务(部分系统需要) sudo systemctl stop docker # 停止Docker主服务 
  2. 确认当前数据目录:通过以下命令查看Docker默认存储路径(通常为/var/lib/docker):
    sudo docker info | grep "Docker Root Dir" 

二、迁移Docker数据目录(核心步骤)

1. 创建目标目录并迁移数据

选择新的存储路径(如/home/username/docker-data,需替换为实际路径),并使用rsync工具迁移数据(-a参数保留文件权限和属性,-v显示进度):

sudo mkdir -p /home/username/docker-data # 创建目标目录 sudo rsync -av /var/lib/docker/ /home/username/docker-data/ # 迁移数据 

注:若数据量较大,可使用cp -a替代rsync,或直接移动数据(mv /var/lib/docker /home/username/docker-data),但需确保原目录已卸载。

2. 配置Docker使用新路径

编辑Docker守护进程配置文件/etc/docker/daemon.json(若文件不存在则创建),添加data-root字段指定新路径:

sudo nano /etc/docker/daemon.json 

输入以下内容(仅保留data-root字段,避免与其他配置冲突):

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

3. 重启Docker服务并验证

重新加载系统服务配置并启动Docker,通过docker info命令验证路径是否生效:

sudo systemctl daemon-reload # 重新加载配置 sudo systemctl start docker # 启动Docker服务 docker info | grep "Docker Root Dir" # 检查新路径 

预期输出应显示新路径(如Docker Root Dir: /home/username/docker-data)。

三、迁移后的清理与维护

  1. 删除旧数据(可选):确认新路径运行正常后,删除旧数据目录以释放系统空间:
    sudo rm -rf /var/lib/docker # 删除旧目录 
  2. 定期备份数据:建议定期将新路径下的数据备份至外部存储(如云盘),避免单点故障:
    sudo rsync -av /home/username/docker-data /backup/docker/ # 备份到/backup/docker目录 
  3. 监控磁盘空间:定期检查新存储路径的磁盘使用情况,及时扩展分区或迁移至更大磁盘:
    df -h /home/username/docker-data # 查看磁盘使用率 

四、常见问题排查

  1. 权限问题:若迁移后出现“Permission denied”错误,需调整新目录权限(755)并检查SELinux/AppArmor策略:
    sudo chmod 755 /home/username/docker-data # 调整权限 sudo chcon -R system_u:object_r:container_var_lib_t:s0 /home/username/docker-data # SELinux修复(若启用) 
  2. 容器无法启动:通过docker ps -a查看容器状态,若报错“Cannot start container”,需检查数据完整性(如/var/lib/docker/overlay2目录是否存在)。
  3. 配置冲突:若修改daemon.json后Docker无法启动,需检查文件语法(如JSON格式是否正确),或恢复默认配置(删除data-root字段)。

通过以上步骤,可安全、高效地将Ubuntu系统中Docker的数据目录迁移至指定位置,解决默认路径空间不足的问题。迁移过程中需特别注意数据一致性和权限设置,确保服务稳定运行。

0