使用 Docker 存储数据的好策略?

Good strategy for storing data using Docker?

对于我的应用程序,我正在考虑使用 Docker 容器,我想在容器中 运行 一些复杂的 CRM 系统,例如 SugarCRM,我的问题是关于 VOLUMES 和数据存储?

我正在考虑使用 IBM Bluemix Containers,我想知道我应该如何在外部服务中存储数据?在容器内?你认为最好的策略是什么?也许我不理解容器的概念,它们应该只用作托管应用程序的临时环境吗?

你的问题很宽泛,可以说 "best strategy" 没什么。我尽力引导您走向正确的方向希望对您有所帮助。

你的问题包含关于存储的几个要素,我试着简单地一一跳到它们。

  1. 考虑客户数据:(我指的是应该安全正确存储的数据)

    • 关于数据库存储,既然您决定使用 BlueMix,请尽可能使用外部数据存储。从 RDBMS 到 NoSql 的各种云存储都以非常优惠的价格提供。

    • 如果您想使用自己的数据库和数据存储,您可以使用安装到 docker 容器中的主机文件系统,并确保它们已设置并且 backed-up 正确。您可以通过在 Docker.

    • 中使用 -v 安装您的卷来实现此目的
    • 如果你愿意,你也可以使用一个叫做 'Data Containers' 的东西。 Docker 可以在 docker 容器内提供数据量,并且它们独立于容器生命周期,并且永远不会被垃圾收集。那么它的工作原理是,您使用 -v 创建一个带有卷但没有主机路径的虚拟容器。然后你启动另一个容器并使用 --volumes-from。更多信息:https://docs.docker.com/engine/userguide/dockervolumes/

    • 您可以使用一些外部卷插件轻松地在您的队列中移动数据卷,并确保它们在需要时可供 docker 容器使用。我的设置有点复杂,但非常有趣和有趣;-) 喜欢弗洛克:https://clusterhq.com/docker-plugin/ or GlusterFS: https://github.com/calavera/docker-volume-glusterfs and more: https://github.com/docker/docker/blob/master/docs/extend/plugins.md

    • 您还可以将数据存储到云数据存储中,例如 Elastic 支持用于存储快照的 Amazon S3,因此您可以依赖它,对我来说这听起来不是万无一失,但无论如何它是一个选项: -)

  2. 下一类是从您的容器生成的数据,但它实际上不是客户数据,例如日志记录信息。对于那些也有几个选项:

    • 您可以再次从主机挂载卷并将数据存储在您的主机中,例如使用 logstash 备份并发送到某处。

    • 您可以使用各种直接从 docker 守护程序收集数据的日志记录插件和容器,例如:loggly 或 logentries 等等。

    • 您可以将 syslog /dev/syslog 套接字直接挂载到应用程序的容器中,并将数据发送到主机 syslog,然后使用各种可用机制收集它们。

    • 如果您正在使用 systemd,那么 journald 已经获得了您所有的 docker 日志,因此如果它进入 stdout 或应用程序日志stderr 你可以使用 journalctl 收集并随心所欲。

这些只是冰山一角。如果您需要更多信息,请告诉我,也许我可以提供帮助。