备份友好的Docker卷

我想采取一个全面的方法来备份运行多个Docker容器的多台机器。 有些可能运行,例如Postgres数据库。 我想备份此系统,而不必为不同types的卷提供特定的备份命令。

有一个自定义的外部脚本可以发送例如信号到容器或运行Docker命令,但是我强烈希望避免特定于某个图像或某种types的图像。 在Postgres的示例中,文档build议运行postgres特定的命令来备份数据库,这违背了我正在创build的备份解决scheme的devise目标。

如果我不得不对Docker镜像施加限制,只要从现有的Docker镜像开始并进行扩展就可以很容易地实现。

有关如何解决这个问题的任何想法?

我只是想强调,我不是在寻找一个如何在Docker下备份Postgres数据库的解决scheme,已经有很多解释如何做的解答。 我正在寻找一种方法来备份任何卷,而不必知道它是什么或不必为其数据运行特定的命令。

(我考虑过这个问题是属于SO还是Serverfault,但是我认为这是开发人员需要解决的问题,因此它属于这里,如果达成共识的话很乐意去动它)

编辑:澄清,我想做一些类似于这个问题中解释的东西如何处理docker工人的持久性存储(例如数据库),但在接受的答案中使用的方法是不会与Postgres的工作(我相信其他数据库容器)根据文档。

我怀疑有一个自定义的解决scheme,整体,多机器,多容器,应用程序/容器不可知的方法。 从我的angular度来看,首先需要很多的编排活动。 而且我不知道你是否不会使用像Kubernetes这样的东西 – 无论如何 – 它应该有自己的备份解决scheme。

对于单机,多容器设置,我build议将容器的数据,configuration和最终构build脚本存储在一个目录树(例如/docker/ )中,并使用标准的基于文件的备份程序来备份根目录。

  • 使用docker-compose来pipe理你的容器。 这使您可以存储configuration,甚至可以在文件中创build选项。 我有每个服务的个人撰写文件,但一个也可以工作。
  • 有一个每个服务的子目录。 装载绑定安装目录,也就是容器的卷。 如果您需要更加彻底地调整构build过程,则可以轻松地在其中存储脚本,源代码,Docker文件等。
  • 由于容器应该是短暂的,所有持久性数据应该以bind-mount方式,因此在主docker目录中。