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

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

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

你的问题非常广泛,没有什么可以说是最好的策略。 我尽我所能来指导你正确的方向,我希望有所帮助。

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

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

    • 关于数据库存储,因为您已经决定使用BlueMix,所以尽可能使用外部数据存储。 从RDBMS到NoSql的各种云存储都有很好的价格。

    • 如果你想使用自己的数据库和数据存储,你可以使用主机文件系统挂载到你的docker容器中,并确保它们已经正确设置和备份。 您可以通过在Docker中使用-v简单地挂载音量来实现此目的。

    • 如果你想要,你也可以使用一些叫做“数据容器”的东西。 Docker可以在Docker容器中提供数据卷,它们独立于容器生命周期,永远不会收集垃圾。 所以它是如何工作的,是你用-v创build了一个带有卷的虚拟容器,但没有主机path。 然后你启动另一个容器并使用--volumes-from 。 更多信息: https : //docs.docker.com/engine/userguide/dockervolumes/

    • 您可以使用一些外部卷插件轻松移动您的数据卷,并确保它们在需要时可用于docker集装箱。 我有点复杂的设置,但非常有趣和有趣;-)像Flocker: https ://clusterhq.com/docker-plugin/或GlusterFS: https : //github.com/calavera/docker-volume-glusterfs和更多: https ://github.com/docker/docker/blob/master/docs/extend/plugins.md

    • 您还可以将数据存储到云数据存储区中,例如弹性支持Amazon S3以进行存储快照,因此您可以依靠这一点,对我来说,这听起来不错,但无论如何它都是一个选项:-)

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

    • 您可以再次从主机装载卷并将数据存储在主机中,例如使用logstash进行备份和发送。

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

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

    • 如果你使用的是systemd那么journald已经得到了你所有的journald日志,因此如果它应用到stdout或者stderr你可以使用journalctl来收集并且做你想做的事情。

这只是冰山一angular。 如果你需要更多的信息,请让我知道,也许我可以帮助。