温馨提示×

Docker在CentOS上的备份与恢复如何操作

小樊
41
2025-12-17 10:11:59
栏目: 智能运维

CentOS 上 Docker 的备份与恢复实操指南

一、备份与恢复策略总览

  • 备份对象应覆盖:镜像容器可迁移快照数据卷(Volume)Docker 配置、以及可选的容器运行参数/网络定义
  • 常用工具与用途对照:
    • docker save / docker load:用于镜像的打包与还原,保留镜像层与历史,适合迁移与长期存档。
    • docker export / docker import:用于容器文件系统的快照,生成“扁平”镜像,不包含构建历史与元数据,适合快速迁移容器内容。
    • 卷备份:对挂载到容器中的持久化数据,优先直接备份卷内容(进入容器或用临时容器打包),避免依赖宿主路径结构。
    • 配置与元数据:备份 /etc/docker/daemon.json 与必要的网络/Compose 定义文件,便于恢复环境一致性。

二、标准操作步骤

  • 1)备份

    • 镜像
      • 列出镜像:docker images
      • 导出镜像:docker save -o myimage_latest.tar myimage:latest
    • 容器(两种思路)
      • 保留元数据与历史:先提交为镜像再保存
        • docker stop <容器名>(可选,确保一致性)
        • docker commit <容器名> backup_image:tag
        • docker save -o backup_image.tar backup_image:tag
      • 仅导出文件系统快照(更轻量)
        • docker export -o container_fs.tar <容器名>
    • 数据卷(推荐用临时容器打包)
      • 查看卷:docker volume ls
      • 备份卷:
        • docker run --rm --volumes-from <数据卷容器名或目标容器名> -v $(pwd):/backup busybox tar czf /backup/vol_backup.tar.gz -C /容器内/数据/路径 .
    • 配置与元数据
      • 备份配置:sudo cp -r /etc/docker /backup/docker_config
      • 如需迁移网络/Compose 定义,一并备份相应 .json / docker-compose.yml 文件。
  • 2)恢复

    • 镜像
      • docker load -i myimage_latest.tar
    • 容器
      • 由“提交镜像”方式恢复:
        • docker run -d --name <新容器名> <镜像名:标签>(按需挂载卷、端口、环境变量等)
      • 由“export/import”方式恢复:
        • cat container_fs.tar | docker import - <新镜像名:标签>
        • 再基于该镜像创建并启动容器(同上)
    • 数据卷
      • 先创建卷:docker volume create <卷名>
      • 恢复数据到卷:
        • docker run --rm --volumes-from <目标容器名> -v $(pwd):/backup busybox tar xzf /backup/vol_backup.tar.gz -C /容器内/数据/路径
    • 配置与元数据
      • 恢复配置:sudo cp -r /backup/docker_config /etc/docker
      • 如修改了 /etc/docker/daemon.json,需重启:sudo systemctl restart docker
      • 网络/Compose 定义按原样放置后使用 docker network create / docker-compose up -d 恢复。

三、迁移与系统重装场景

  • 迁移到新主机
    • 将备份产物(镜像 tar、卷 tar、配置文件、Compose 文件)通过 scp/rsync 传到目标 CentOS 主机。
    • 在目标主机按“恢复”步骤依次执行:先 docker load 镜像,再恢复卷数据,最后用 docker rundocker-compose 拉起服务。
  • 系统重装后恢复
    • 重装并启动 Docker:sudo yum install -y docker-ce docker-ce-cli containerd.io && sudo systemctl start docker && sudo systemctl enable docker
    • 恢复顺序建议:配置 → 镜像 → 卷 → 容器/服务;若采用“整库打包”方式,可在停机后备份 /var/lib/docker 并在新环境恢复(风险较高,需版本与存储驱动一致,优先使用上面的分层备份/恢复)。

四、注意事项与最佳实践

  • 一致性:对含数据库等有状态服务,先停写或使用应用层备份(如 mysqldump)再备份卷,避免备份过程中产生不一致数据。
  • 元数据差异:docker save/load 保留镜像历史与元数据;docker export/import 生成“扁平”镜像,缺少历史与部分元数据,重建容器时需补齐 CMD/ENTRYPOINT/ENV 等参数。
  • 存储驱动与版本:跨主机迁移时尽量保持 Docker 版本与**存储驱动(如 overlay2)**一致;使用“整库打包”方式对底层路径依赖较强,风险较大,优先采用分层备份/恢复。
  • 安全性:备份文件含敏感数据,建议加密并妥善存放;传输使用 scp/rsync over SSH 或等效安全通道。

0