我想采用一种整体方法来备份运行多个 Docker 容器的多台机器。例如,有些可能会运行 Postgres 数据库。我想备份这个系统,而不必为不同类型的卷设置特定的备份命令。
有一个自定义的外部脚本可以发送例如向容器发出信号或运行 Docker 命令,但我强烈希望避免任何特定于特定图像或图像类型的东西。在 Postgres 的示例中,文档建议运行特定于 postgres 的命令来备份数据库,这违背了我试图创建的备份解决方案的设计目标。
如果我必须对 Docker 镜像施加限制,这是可以的,只要从现有的 Docker 镜像开始并扩展它相当容易实现。
关于如何解决这个问题的任何想法?
我只是想强调一下,我并不是在寻找如何在 Docker 下备份 Postgres 数据库的解决方案,已经有很多答案解释了如何这样做。我专门寻找一种方法来备份任何卷,而不必知道它是什么或不必为它的数据运行特定的命令。
(我考虑过这个问题是属于SO还是Serverfault,但我认为这是需要开发人员解决的问题,因此属于这里。如果没有共识,很高兴移动它)
编辑:为了澄清,我想做一些类似于这个问题中解释的事情
How to deal with persistent storage (e.g. databases) in docker
但是根据文档,使用已接受答案中的方法不适用于 Postgres(我相信其他数据库容器)。
最佳答案
我怀疑是否存在自定义解决方案、整体、多机器、多容器、应用程序/容器不可知方法。从我的角度来看,首先有很多编排事件是必要的。而且我想知道你是否不会使用像 Kubernetes 这样的东西——据说——它带有自己的备份解决方案。
对于单机、多容器设置,我建议将容器的数据、配置和最终构建脚本存储在一个目录树中(例如 /docker/
),并使用基于标准文件的备份程序来备份根目录。
docker-compose
管理您的容器。这使您可以将配置甚至构建选项存储在文件中。我为每个服务都有一个单独的撰写文件,但一个也可以工作。 关于docker - 备份友好的 Docker 卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174332/