docker - 备份友好的 Docker 卷

标签 docker backup docker-volume

我想采用一种整体方法来备份运行多个 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管理您的容器。这使您可以将配置甚至构建选项存储在文件中。我为每个服务都有一个单独的撰写文件,但一个也可以工作。
  • 每个服务都有一个子目录。在那里挂载绑定(bind)挂载目录,也就是容器的卷。如果您需要更彻底地调整构建过程,您也可以轻松地在其中存储脚本、源代码、Dockerfile 等。
  • 由于容器应该是短暂的,所有持久数据都应该在绑定(bind)挂载中,因此在主 docker 目录中。
  • 关于docker - 备份友好的 Docker 卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46174332/

    相关文章:

    docker - 在配置文件中使用变量

    mongodb - 如何分析 Docker 容器的磁盘使用情况

    jpa - JPA 2从元模型中删除/插入订单

    docker - 使用带有单个目录作为参数的安装卷选项 '-v'进行“docker run”(不使用冒号(“:”拆分源和目标)

    amazon-web-services - 用于AWS ECS时的存储要求

    docker - 如何使用Vagrant和Kubernetes列出Docker镜像

    python - 在 Docker 中根据更改重新启动 Flask 应用程序

    linux - 酒保+用红色标记失败/开始的备份

    iphone - iOS 从备份恢复会保留 CoreData 应用程序数据吗?

    Docker容器无法将文件复制到卷中