温馨提示×

ubuntu下docker备份与恢复方法

小樊
50
2026-01-03 02:09:52
栏目: 智能运维

Ubuntu 下 Docker 备份与恢复实用指南

一 备份与恢复总览

  • 备份对象通常包含:镜像 Image容器 Container数据卷 VolumeDocker 配置与元数据
  • 常用工具与命令:docker save/load(镜像归档与导入)、docker export/import(容器文件系统快照导入)、docker commit(将容器提交为新镜像)、docker cp(在容器与宿主机间拷贝文件/目录)、rsync(目录同步)、对卷的tar 打包/解包直接目录拷贝
  • 适用场景:迁移到新主机、系统重装、灾备演练、回滚版本等。

二 镜像与容器的备份与恢复

  • 镜像备份与恢复
    • 备份:将指定镜像保存为 tar 归档
      • 单镜像:docker save -o myimage_latest.tar myimage:latest
      • 批量镜像:docker save -o all_images.tar $(docker images -q)
    • 恢复:docker load -i myimage_latest.tardocker load < all_images.tar
  • 容器备份与恢复
    • 方式 A(保留元数据,推荐):先提交为镜像,再保存/运行
      • 提交:docker commit <容器名或ID> my_backup_image:latest
      • 保存:docker save -o my_backup_image.tar my_backup_image:latest
      • 恢复运行:docker load -i my_backup_image.tardocker run -d --name restored_container my_backup_image:latest(按需加 -p/-e/–network 等参数)
    • 方式 B(仅文件系统快照):导出/导入
      • 导出:docker export -o container.tar <容器名或ID>
      • 导入:docker import container.tar mynewcontainer:latest(注意:import 不会保留原容器的启动命令、环境变量等元数据,需重新配置)

三 数据卷的备份与恢复

  • 推荐方式:用临时容器对卷进行打包/解包(不依赖 Docker 内部路径,最稳妥)
    • 备份卷到宿主机当前目录:
      • docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar czvf /backup/backup_$(date +%F_%H-%M-%S).tar.gz -C /volume .
    • 从备份恢复到卷:
      • docker run --rm -v my_volume:/volume -v $(pwd):/backup busybox tar xzvf /backup/backup_2025-08-01_10-00-00.tar.gz -C /volume
  • 其他方式
    • 直接拷贝卷数据目录(需更高权限,谨慎操作):
      • 备份:sudo rsync -aP /var/lib/docker/volumes/my_volume/_data/ /path/to/backup/
      • 恢复:sudo rsync -aP /path/to/backup/ /var/lib/docker/volumes/my_volume/_data/
    • 仅拷贝容器内某目录到宿主机(适合一次性导出):
      • 备份:docker cp <容器名或ID>:/容器内/路径 /host/备份/路径
      • 恢复:docker cp /host/备份/路径 <容器名或ID>:/容器内/路径
  • 一致性建议:对数据库等有状态服务,备份前尽量暂停写入或短暂停机,避免热备份不一致。

四 系统重装或迁移时的整体流程

  • 备份清单
    • 镜像:docker save -o all_images.tar $(docker images -q)
    • 容器(可选,仅文件系统):对关键容器执行 docker export -o .tar
    • 卷:按上文卷备份方法导出为 .tar.gz
    • 配置与元数据:/etc/docker 目录(如 daemon.json、证书、registry 配置等)
  • 在新主机安装并启动 Docker
    • 安装:sudo apt update && sudo apt install -y docker.io
    • 启动:sudo systemctl start docker && sudo systemctl enable docker
  • 恢复步骤
    • 镜像:docker load -i all_images.tar
    • 容器:若使用 export/import,执行 docker import .tar :,再用 docker run 按原参数启动
    • 卷:按上文卷恢复方法将 .tar.gz 解包到目标卷
    • 配置:sudo cp -r /backup/etc/docker/ /etc/docker/*,必要时重启 Docker
  • 验证
    • docker imagesdocker ps -adocker volume ls、进入容器或应用自检数据可用性。

五 注意事项与最佳实践

  • 选择策略:有状态数据优先用管理;镜像/容器用 save/loadcommit;跨主机迁移优先卷的 tar 包方式。
  • 一致性:对数据库等,备份前停止写入/短暂停机或使用应用层一致性快照;恢复后做数据校验
  • 权限与安全:直接操作 /var/lib/dockerroot;备份文件妥善存放并设置访问权限;传输到外部存储时建议加密与校验
  • 自动化:将卷备份脚本加入 cron(如每日 3:00 执行),并保留多份历史与校验值,便于回滚。
  • 风险提示:操作前确认磁盘空间业务窗口;生产环境先在测试环境验证;对关键数据实施异地/多副本策略。

0