Ubuntu Docker数据迁移详细步骤
在进行数据迁移前,需完成以下关键操作以避免数据丢失或服务异常:
sudo systemctl stop docker.socket # 先停止socket服务(部分系统需要) sudo systemctl stop docker # 停止Docker主服务 /var/lib/docker):sudo docker info | grep "Docker Root Dir" 选择新的存储路径(如/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),但需确保原目录已卸载。
编辑Docker守护进程配置文件/etc/docker/daemon.json(若文件不存在则创建),添加data-root字段指定新路径:
sudo nano /etc/docker/daemon.json 输入以下内容(仅保留data-root字段,避免与其他配置冲突):
{ "data-root": "/home/username/docker-data" } 重新加载系统服务配置并启动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)。
sudo rm -rf /var/lib/docker # 删除旧目录 sudo rsync -av /home/username/docker-data /backup/docker/ # 备份到/backup/docker目录 df -h /home/username/docker-data # 查看磁盘使用率 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修复(若启用) docker ps -a查看容器状态,若报错“Cannot start container”,需检查数据完整性(如/var/lib/docker/overlay2目录是否存在)。daemon.json后Docker无法启动,需检查文件语法(如JSON格式是否正确),或恢复默认配置(删除data-root字段)。通过以上步骤,可安全、高效地将Ubuntu系统中Docker的数据目录迁移至指定位置,解决默认路径空间不足的问题。迁移过程中需特别注意数据一致性和权限设置,确保服务稳定运行。