Docker在Debian中的备份与恢复方法
导读:Docker在Debian中的备份与恢复方法 一 备份范围与准备 明确需要保护的资产:持久化数据(Docker 卷与绑定挂载)、镜像、容器可写层(如有重要运行时文件)、以及编排与配置(如 docker-compose.yml、/etc/d...
Docker在Debian中的备份与恢复方法
一 备份范围与准备
- 明确需要保护的资产:持久化数据(Docker 卷与绑定挂载)、镜像、容器可写层(如有重要运行时文件)、以及编排与配置(如 docker-compose.yml、/etc/docker/daemon.json)。
- 选择备份窗口与一致性策略:对数据库等有状态服务,优先在维护窗口内执行,必要时短暂停止相关容器以获得一致性;对无状态服务可在线备份。
- 准备存储与保留策略:为备份预留充足磁盘空间,建议采用“本地保留 + 远端/云端”的3-2-1策略(3份副本、2种介质、1份异地/离线)。
- 校验与演练:定期做恢复演练与校验(如校验和、抽样恢复),确保备份可用。
二 备份方法
- 镜像与容器文件系统
- 备份镜像:将指定镜像导出为 tar 归档,便于迁移与长期保存。
示例:docker save -o /backup/my_image.tar my_image:latest - 备份容器可写层/目录:使用 docker cp 从运行中或已停止的容器复制目录到宿主机。
示例:docker cp my_container:/var/www/html /backup/html - 批量镜像导出思路:对
docker images -q的结果循环执行docker save,归档命名包含仓库与标签以便识别。
- 备份镜像:将指定镜像导出为 tar 归档,便于迁移与长期保存。
- 卷与绑定挂载
- 卷数据备份:先定位卷的宿主机挂载点(Mountpoint),再用
tar打包,避免直接对挂载点做 cp 导致符号链接/设备文件处理异常。
示例:- 查看卷信息:
docker volume inspect my_volume - 打包:
sudo tar czf /backup/vol_my_volume.tar.gz -C /var/lib/docker/volumes/my_volume/_data .
- 查看卷信息:
- 绑定挂载:直接对宿主机目录执行
tar打包即可,例如:sudo tar czf /backup/app_data.tar.gz -C /data/app .
- 卷数据备份:先定位卷的宿主机挂载点(Mountpoint),再用
- 配置与编排
- 守护进程与网络配置:
sudo cp /etc/docker/daemon.json /backup/daemon.json;如有自定义网络配置或子目录,一并备份。 - 编排文件:保存 docker-compose.yml 或等效的 Kubernetes/自定义编排清单,并记录镜像标签、环境变量、端口与卷映射。
- 守护进程与网络配置:
- 自动化脚本示例(按需裁剪)
- 思路:定义备份目录;可选停止关键容器;导出镜像;对卷与绑定挂载执行 tar;备份配置与编排文件;记录时间与清单。
- 注意:卷备份建议基于 Mountpoint 使用 tar,避免
docker cp < volume> :/的局限性与潜在错误。
- 数据库与应用内备份
- 在容器内执行应用/数据库原生备份工具(如 mysqldump、pg_dump),将备份文件落到卷或绑定挂载,再由宿主机统一归档与传输。
- 示例:
docker exec db_container mysqldump -u root -p --single-transaction --routines --triggers db > /backup/db.sql
三 恢复方法
- 镜像与容器
- 恢复镜像:从归档加载镜像。
示例:docker load -i /backup/my_image.tar - 恢复容器数据:将备份数据拷回容器或新容器。
示例:docker cp /backup/html my_container:/var/www/html - 重建容器:优先使用编排文件(如
docker-compose up -d)重建,确保卷、网络、环境变量与端口一致。
- 恢复镜像:从归档加载镜像。
- 卷与绑定挂载
- 卷恢复:在新环境或同主机上先创建卷,再用 tar 解包到卷的 Mountpoint。
示例:- 创建卷:
docker volume create my_volume - 解包:
sudo tar xzf /backup/vol_my_volume.tar.gz -C /var/lib/docker/volumes/my_volume/_data
- 创建卷:
- 绑定挂载:解包到宿主机目标目录即可:
sudo tar xzf /backup/app_data.tar.gz -C /data/app
- 卷恢复:在新环境或同主机上先创建卷,再用 tar 解包到卷的 Mountpoint。
- 配置与编排
- 恢复 /etc/docker/daemon.json 并重启 Docker:
sudo systemctl restart docker(变更前先备份当前配置)。 - 使用保存的 docker-compose.yml 恢复服务栈:
docker-compose up -d(必要时先docker-compose pull拉取镜像)。
- 恢复 /etc/docker/daemon.json 并重启 Docker:
- 数据库与应用
- 将备份的 .sql 文件拷入数据库容器并导入:
示例:docker exec -i db_container mysql -u root -p db < /backup/db.sql - 按应用要求执行迁移/升级脚本,并校验数据一致性与权限。
- 将备份的 .sql 文件拷入数据库容器并导入:
四 注意事项与最佳实践
- 一致性与停机:对强一致场景(数据库、消息队列等),优先短暂停机或使用应用层一致性快照;对无状态服务可在线备份。
- 卷的正确备份方式:以卷的宿主机 Mountpoint 为基准使用
tar打包/解包,避免docker cp < volume> :/的已知限制与路径误解。 - 镜像与标签治理:恢复时确保镜像标签与编排文件一致;长期保存建议同时保留镜像归档与构建元数据(Dockerfile、构建参数)。
- 安全与合规:备份文件包含敏感数据时,使用 GPG 加密或传输至具备访问控制与加密的存储;定期清理过期备份。
- 验证与演练:每次重大变更后做一次恢复演练,并保留校验记录(如 sha256sum);为关键业务建立**恢复目标(RPO/RTO)**与告警。
- 灾难恢复:若宿主机或 Docker 服务损坏,先重装 Docker(Debian 可通过 apt 重新安装并启动服务),再按“配置 → 卷 → 镜像 → 编排”的顺序恢复。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Docker在Debian中的备份与恢复方法
本文地址: https://pptw.com/jishu/749179.html
