docker - 备份 Dockerized PostreSQL 数据库
问题描述
我有一个基于 docker-compose 的 Postgresql 容器,以及 Pgadmin
我想为我的数据库进行备份以防止数据丢失。所以我想从 Pgadmin 界面创建备份,但这会在容器本身内创建一个备份文件。
我试图弄清楚的是,如果错误地运行 docker-compose down,我如何创建备份?这将擦除附加到 docker-compose 文件的所有卷。
谢谢
解决方案
首先,对于生产用途,您不使用docker-compose
docker swarm 或 kubernetes。docker-compose 是为测试而设计的,您不应该使用 docker-compose 管理您的生产,甚至是必须具有 SLA(如无数据丢失)的等效测试系统。
然后 docker-compose down 不要删除卷,为此,您需要添加“-v”选项,例如:
docker-compose down -v
第三,如果您想使用不是由 docker-compose 管理但长期存在的持久卷,请根据文档(https://docs.docker.com/compose/reference/down/)将其声明为external :
停止容器并删除由 up 创建的容器、网络、卷和映像。
默认情况下,唯一删除的内容是:
Compose 文件中定义的服务容器 Compose 文件的网络部分中定义的网络 默认网络(如果使用 ) 永远不会删除定义为外部的网络和卷。
通过这种方式,您可以将卷生命周期与容器分离。有关卷的文档还解释了如何使用卷驱动程序在必要时访问远程文件系统和备份卷:https ://docs.docker.com/storage/volumes/
因此,如果您想要备份,请通过 shell 命令对映射到卷的特定文件夹执行此操作,该卷可能位于远程文件系统的幕后,并且本身被认为是安全的(备份和复制)。
推荐阅读
- prolog - Prolog遍历列表并通过将列表中的所有奇数加倍来将奇数变为偶数
- .net - 单元测试 AppContext 开关
- javascript - PWA 作为共享选项不可见
- java - 如何使用共享首选项在此处单击我的卡片视图后将启用设置为 false
- c# - asp-validation-summary 阻止返回按钮
- reactjs - 在页面 url 上创建事件已更改
- java - Firebase 数据库发生更改后,活动重新启动
- angular - 如何在 Angular 库中使用 Angular 项目中的样式?
- kubernetes - 如何为 Minikube 上的入口控制器指定自定义端口?
- redirect - 通过 www 访问域。重定向到子域