跳到主内容

Docker Compose 数据备份教程:卷、数据库与恢复演练

讲解 Ubuntu VPS 上 Docker Compose 应用的命名卷、绑定目录和数据库备份,覆盖一致性、异地副本、校验、自动化及恢复演练。

GSProber · 主机测评编辑0 阅读
讲解 Ubuntu VPS 上 Docker Compose 应用的命名卷、绑定目录和数据库备份,覆盖一致性、异地副本…

Docker Compose 数据备份教程

Docker Compose 让多容器应用容易部署,但重新创建容器不会自动保护业务数据。可靠备份必须区分 Compose 配置、命名卷、绑定目录、数据库逻辑数据和密钥,并且定期验证恢复。本教程依据 Docker 官方卷与备份文档整理,示例适用于 Ubuntu VPS 上的常见 Web 应用。

先识别真正需要保存的数据

执行 docker compose config 查看合并后的配置,再用 docker volume lsdocker inspect 确认卷。Compose 文件、环境变量模板、反向代理配置和部署脚本应进入私有版本库;数据库文件、上传目录和应用状态属于运行数据。镜像本身通常可重新拉取,不应把整个 Docker 安装目录粗暴打包当作唯一备份。

命名卷由 Docker 管理,绑定目录则直接对应宿主机路径。官方 Compose 文档指出,顶层 volumes 声明定义持久存储,服务必须显式挂载才能访问。先制作资产清单,记录卷名、挂载目标、数据所有者和恢复顺序。服务器迁移思路可参考 Linux VPS 迁移教程

数据库优先使用逻辑备份

MySQL、MariaDB 和 PostgreSQL 在运行时会维护缓存、日志和事务状态,直接复制活动数据目录可能得到不一致副本。优先使用数据库官方导出工具,在容器内生成逻辑备份并写入受控目录。例如 PostgreSQL 可使用 pg_dump,MySQL 可使用 mysqldump。导出文件完成后检查退出码、大小和校验值,并加密传送到独立存储。

如果必须备份数据库卷,应先按数据库文档执行一致性快照或短暂停止写入。docker compose stop 会停止服务但保留容器,docker compose down 可能移除容器和网络;不要附加 -v,否则命名卷可能被删除。操作前保留 SSH 会话并确认磁盘空间。

备份命名卷

官方 Docker 文档提供通过临时容器挂载卷与宿主机目录的方式。通用思路是以只读方式挂载源卷,把内容归档到备份目录:

Bash
docker run --rm \
  -v myapp_data:/source:ro \
  -v /srv/backups:/backup \
  alpine sh -c 'cd /source && tar czf /backup/myapp-data.tgz .'

归档文件名应包含 UTC 时间,完成后生成 SHA-256 校验值。不要把备份只留在同一块 VPS 磁盘;主机故障、误删或账户异常会同时影响源数据和副本。至少保留一个异地或对象存储副本,并设置生命周期与访问权限。

恢复流程比备份命令更重要

恢复时先创建空卷,再用临时容器把归档解压到卷中,然后启动应用。恢复前核对镜像版本、数据库版本、用户和文件权限。数据库逻辑备份应导入新建数据库,而不是覆盖未知状态的数据目录。应用启动后检查登录、上传、后台任务和错误日志。

每月至少在隔离环境做一次恢复演练,记录恢复用时与缺失步骤。只有成功恢复过的副本才能被视为有效备份。可结合 Ubuntu VPS 自动安全更新教程安排补丁和维护窗口。

自动化和保留策略

使用 systemd timer 或受控计划任务执行导出、归档、校验、上传和过期清理。脚本应在任何一步失败时退出并告警,避免上传空文件后仍标记成功。密钥放在权限受限的环境文件或凭据服务中,不写进 Compose 文件和仓库。

可以采用每日增量或逻辑导出、每周完整副本、月度长期副本,但具体周期取决于可接受的数据损失。备份前后记录文件数量、数据库对象和校验值;远端上传完成后再删除本地旧副本。磁盘容量告警必须早于备份空间耗尽。

上线检查清单

确认 Compose 配置可重建、所有持久卷已列入清单、数据库使用一致性方式导出、备份完成校验与加密、至少一份副本位于独立故障域,并已经在隔离环境恢复。不要把容器仍能启动误认为数据安全,也不要把云平台快照当作唯一方案。分层备份加定期恢复演练,才是 Docker Compose 应用可持续维护的基础。

所属专题:建站VPS专题
教程GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebR…

Cloudflare Workers 免费搭建开源远程桌面完整教程:无需 VPS,支持 WebRTC P2P、D1、KV、R2、浏览器远程控制、Windows 客户端和文件传输

GsDesk 是一款基于 Cloudflare Workers 与 VPS 自托管 的开源远程桌面项目,支持 WebRTC P2P 直连,服务端仅负责 API、身份认证和 WebSocket 信令,不中转桌面视频流,大幅降低服务器带宽成本。项目支持 Cloudflare 免费套餐 部署,也可以使用 Docker 在 VPS 上自托管,内置 Windows 客户端、浏览器控制端、手机远程控制,支持 8 位设备 ID、OTP 一次性密码、永久密码、Ed25519 设备认证、JWT 身份验证、文件传输、剪贴板同步、自动重连 等完整功能。

309 阅读

教程如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare…

CloudDisk:基于 Cloudflare Workers 的免费个人网盘,无需 VPS、MySQL,支持 R2+D1+KV 一键部署

如果你一直想拥有一个属于自己的网盘,但又不想买 VPS、维护数据库或者折腾复杂环境,那么这个基于 Cloudflare Workers 的开源项目 CloudDisk 值得看看。整个系统运行在 Cloudflare 免费套餐上,文件存储使用 R2,数据库使用 D1,会话数据使用 KV,不需要 MySQL,也不需要服务器。支持多用户登录、文件夹管理、分享链接、在线预览、Office 文档查看、文本在线编辑、大文件断点续传、协作者权限管理等功能。无论是个人备份、开发者存放代码文件、团队共享资料,还是搭建自己的私有网盘,都可以直接部署到 Cloudflare,一键完成,几乎零维护成本,非常适合独立开发者、个人站长和轻量团队使用。

285 阅读

教程很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安…

Linux 开启 DNS over HTTPS(DoH)教程:使用 Cloudflared + systemd 实现加密 DNS,防污染、防劫持

很多朋友在使用 Linux 服务器或者 VPS 时,经常会遇到 DNS 污染、解析慢、域名无法访问等问题。其实只需要安装 Cloudflare 官方的 cloudflared,并配合 systemd 自启动,就能让整个系统通过 DNS over HTTPS(DoH)进行加密解析。

237 阅读

常见问题

docker compose down 会删除命名卷吗?

默认不会,但附加 -v 参数会删除 Compose 声明的命名卷。执行前应核对命令并确认已有可恢复副本。

数据库容器可以直接复制数据目录吗?

运行中的数据库可能产生不一致副本,优先使用数据库官方逻辑导出工具,或按数据库文档执行一致性快照。

备份文件只保存在同一台 VPS 可以吗?

不建议。同机副本无法覆盖磁盘、主机或账户级故障,至少应把一个加密副本保存到独立故障域。

怎样确认 Docker 备份真正可用?

定期在隔离环境创建空卷和新数据库,完整执行恢复并检查应用关键功能、权限、日志和校验值。

评价与回复

无需登录;审核通过后公开显示。