文章列表
1 分钟阅读

Docker 数据卷与备份:数据库容器怎么保护数据


系列:容器部署基础

第 4 / 10 篇

  1. Docker 安装与使用教程:从零部署第一个容器服务
  2. Dockerfile 入门:构建自己的应用镜像
  3. Docker Compose 使用指南:管理多容器服务
  4. Docker 数据卷与备份:数据库容器怎么保护数据
  5. Docker 网络与端口映射:容器之间怎么通信
  6. Docker 日志和排障:logs、exec、inspect、stats
  7. 用 Docker 部署一个 Python Web 项目
  8. Nginx 反向代理入门:静态文件、HTTPS 和 Web 服务转发
  9. HTTPS 和证书部署指南:Let’s Encrypt、Cloudflare、Nginx 怎么配
  10. Docker 生产环境部署注意事项:镜像、日志、数据卷和健康检查

容器可以随时删,数据不行。很多 Docker 事故不是服务起不来,而是数据库数据放错地方,容器一删就没了。

volume 和 bind mount

volumes:
- pgdata:/var/lib/postgresql/data

这是 named volume,Docker 管理存储位置。

volumes:
- ./uploads:/app/uploads

这是 bind mount,宿主机目录直接挂进去。

查看 volume

Terminal window
docker volume ls
docker volume inspect pgdata

不要在不确定用途时清理 volume。

数据库备份

PostgreSQL 更推荐逻辑备份:

Terminal window
docker compose exec db pg_dump -U postgres app > backup.sql

恢复:

Terminal window
cat backup.sql | docker compose exec -T db psql -U postgres app

MySQL 类似用 mysqldump

常见问题

不要直接复制正在运行中的数据库文件目录当备份。文件可能不一致。先用数据库自己的 dump 工具。

上传文件目录可以用 rsync 使用指南:服务器文件同步与备份 拉回。

总结

容器是临时的,数据卷是长期的。数据库用 dump,上传文件用同步,Compose 文件和 .env 也要备份。部署前先想清楚数据在哪里,比出问题后恢复更重要。