首页/云/Docker 容器速查/数据卷的打包备份与恢复
网络与存储52 条

数据卷的打包备份与恢复

用临时容器把卷内容打成 tar 到宿主目录:不依赖业务容器停机状态,恢复时反向解包;数据库类建议先做逻辑导出再打包。

Docker 容器速查云更新于 2026-10-13

思路与原理

用临时容器把卷内容打包成 tar 到宿主目录,是 Docker 环境下最通用的卷备份方式:临时容器同时挂载数据卷与宿主备份目录,用 tar 打包即可,不依赖业务容器配合。恢复时反向解包回目标卷。数据库这类带写入缓冲的服务,应优先做逻辑导出,或确认可以停写之后再打包文件。

基本信息

备份方式临时容器挂载卷与宿主目录,tar 打包
恢复方式反向解包到目标卷
一致性建议先停写,或做快照与逻辑导出
权限注意解包后核对属主与容器运行用户
适用平台Docker Engine(Linux 宿主)

典型使用场景

  • 版本升级前的数据卷快照备份
  • 迁移到新宿主时搬运卷数据
  • 定期把关键卷打包到备份目录或对象存储
  • 恢复演练:确认备份包真的能还原
  • 误删数据后的回滚

备份与恢复

备份与恢复
# 备份:临时容器同时挂载数据卷与宿主备份目录
docker run --rm -v pgdata:/var/lib/data -v "$PWD":/backup alpine tar czf /backup/pgdata-$(date +%F).tgz -C /var/lib/data .
tar tzf pgdata-2026-10-12.tgz | head        # 校验包内容,确认非空且结构正确
# 恢复:先备份当前内容,再反向解包到目标卷
docker run --rm -v pgdata:/var/lib/data -v "$PWD":/backup alpine sh -c 'tar xzf /backup/pgdata-2026-10-12.tgz -C /var/lib/data'

各环节注意点

环节做法注意
备份临时容器加 tar 打包以 root 执行,注意文件权限
校验tar tzf 列出内容确认包非空且结构正确
恢复反向解包到目标卷先备份当前内容再覆盖
数据库卷先逻辑导出或停写直接打包文件可能不一致
临时容器以 root 解包时,恢复后要核对目录属主是否符合容器运行用户要求,避免应用因权限问题无法写入。
备份包要放在卷之外的位置(宿主目录、对象存储等),否则宿主故障时数据与备份会一起丢失。
定期做恢复演练比把备份做多份更重要:没有验证过能否还原的备份,等同于没有备份。

易错点

  • 对运行中的数据库直接打包文件:可能得到不一致的数据,恢复后出现损坏或缺失
  • 恢复前不备份当前卷内容:误操作覆盖后没有回退余地
  • 备份完成不做校验:包为空或被截断时,直到真的需要恢复才发现
  • 把备份包留在与数据卷同一块磁盘:宿主级故障会同时失去数据与备份

数据来源与参考

  • Docker 官方文档:Back up, restore, or migrate data volumes(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌