首页主机资讯docker备份与恢复centos方案

docker备份与恢复centos方案

时间2025-12-23 08:06:05发布访客分类主机资讯浏览628
导读:适用于 CentOS 的 Docker 备份与恢复方案 一 备份策略与准备 明确备份范围:优先保护业务数据(Docker 卷)、镜像与容器可重建部分、以及 /etc/docker 配置。 选择一致性方式: 有状态服务(数据库、消息队列...

适用于 CentOS 的 Docker 备份与恢复方案


一 备份策略与准备

  • 明确备份范围:优先保护业务数据(Docker 卷)、镜像与容器可重建部分、以及 /etc/docker 配置。
  • 选择一致性方式:
    • 有状态服务(数据库、消息队列等)优先在容器内执行热备或使用卷快照,再备份卷数据。
    • 无状态服务可直接备份镜像与卷。
  • 准备与校验:
    • 备份目录与时间戳:如 /backup/docker-2025-12-23-1200
    • 保留多份与异地/离线副本(如对象存储、NFS、外接盘)。
    • 记录关键元数据:镜像清单、容器启动命令(可用 docker inspect)、卷名与挂载路径、网络与端口映射、环境变量与 secrets 来源。
  • 版本与兼容性:跨主机迁移时尽量保持 Docker 版本相近;不同版本间镜像层通常可兼容,但元数据与特性可能差异。

二 方法一 镜像与容器的打包迁移(适合快速迁移与重建)

  • 备份镜像
    • 单镜像:docker save -o /backup/myapp_latest.tar myapp:latest
    • 批量镜像:docker save -o /backup/all_images.tar $(docker images -q)
    • 压缩传输:docker save myapp:latest | gzip > myapp_latest.tar.gz
  • 恢复镜像
    • 普通加载:docker load -i /backup/myapp_latest.tar
    • 压缩包:gunzip -c myapp_latest.tar.gz | docker load
  • 从运行中容器创建新镜像(保留当前文件系统变更)
    • docker commit < 容器名或ID> myapp_backup:20251223
    • 再按上节 docker save/load 迁移
  • 导出/导入容器文件系统快照(不包含元数据与历史层)
    • 导出:docker export < 容器名或ID> > container_fs.tar
    • 导入:cat container_fs.tar | docker import - myapp_imported:20251223
  • 说明
    • save/load 保留镜像历史与元数据,适合迁移与重建;export/import 仅文件系统快照,常用于“取文件”。

三 方法二 数据卷与配置的全量备份(适合灾备与系统重装)

  • 备份卷数据(推荐在宿主机对卷目录做快照,或用临时容器打包)
    • 查看卷:docker volume ls
    • 临时容器打包(不依赖卷插件):
      • 备份:docker run --rm --volumes-from myapp -v /backup:/backup centos:7 tar czvf /backup/vol_myapp-20251223.tar.gz /var/lib/mysql
      • 恢复:docker run --rm --volumes-from myapp -v /backup:/backup centos:7 tar xzvf /backup/vol_myapp-20251223.tar.gz -C /
  • 备份 Docker 根目录与配置(停机一致性更佳)
    • 停机:systemctl stop docker
    • 打包:tar czvf /backup/docker-root-20251223.tar.gz -C /var/lib/docker .
    • 打包配置:tar czvf /backup/docker-config-20251223.tar.gz -C /etc/docker .
    • 启动:systemctl start docker
  • 恢复
    • 配置:tar xzvf /backup/docker-config-20251223.tar.gz -C /
    • 数据根目录:先停 Docker,tar xzvf /backup/docker-root-20251223.tar.gz -C /,再启动 Docker
    • 卷数据:按“临时容器打包”的逆过程解压到目标卷挂载点
  • 说明
    • 卷是持久化首选;/var/lib/docker 包含镜像层、容器层与卷元数据,整库备份适合“整机/重装”场景。

四 迁移与恢复流程示例

  • 源机备份
    • 镜像:docker save -o /backup/app_20251223.tar myapp:latest
    • 卷:docker run --rm --volumes-from myapp -v /backup:/backup centos:7 tar czvf /backup/vol_myapp-20251223.tar.gz /var/lib/mysql
    • 配置:tar czvf /backup/docker-config-20251223.tar.gz -C /etc/docker .
  • 传输到目标机
    • scp /backup/ user@target:/backup/
  • 目标机恢复
    • 安装并启动 Docker:yum install -y docker & & systemctl start docker & & systemctl enable docker
    • 配置:tar xzvf /backup/docker-config-20251223.tar.gz -C /
    • 镜像:docker load -i /backup/app_20251223.tar
    • 卷:docker volume create myapp_data;docker run --rm --volumes-from myapp -v /backup:/backup centos:7 tar xzvf /backup/vol_myapp-20251223.tar.gz -C /
    • 启动应用:docker run -d --name myapp -v myapp_data:/var/lib/mysql myapp:latest
  • 说明
    • 上述流程同样适用于跨机房/云厂商迁移;如采用卷插件(如 NFS、块存储),优先使用其原生快照/备份能力。

五 注意事项与最佳实践

  • 一致性优先:数据库等请在容器内执行 热备/冻结(如 mysqldump、pg_dump、xtrabackup),再备份卷;避免仅依赖文件系统拷贝导致数据不一致。
  • 避免直接拷 /var/lib/docker:运行时拷贝易损坏;若必须整库迁移,务必先停机并校验备份完整性(如 sha256sum)。
  • 使用命名卷与明确挂载路径:便于定位与恢复;避免把关键数据放在容器可写层。
  • 保留启动元数据:docker inspect 输出与 compose/stack 文件一起归档,重建时减少手工误差。
  • 定期演练恢复:至少每季度验证一次备份可用性与恢复时长(RTO/RPO 自评)。
  • 存储与保留策略:按容量与合规设置保留周期(如 7/30/90 天),并做异地副本与离线归档。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: docker备份与恢复centos方案
本文地址: https://pptw.com/jishu/778094.html
centos上docker集群搭建方法 docker性能优化centos策略

游客 回复需填写必要信息