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 run 或 docker-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 或等效安全通道。