对于我的应用程序,我正在考虑使用Docker容器,我想在容器中运行一些复杂的CRM系统,如SugarCRM,我的问题是我的卷策略和数据存储应该是什么?
我正在考虑使用IBM Bluemix容器,我想知道如何在外部服务中存储数据?在容器内?您认为最佳策略是什么?也许我不理解容器的概念,它们是否应仅用作托管应用程序的传统环境?
答案 0 :(得分:4)
你的问题非常广泛,并没有什么作为"最好的策略"可以这么说。我尽力引导你走向正确的方向我希望有所帮助。
你的问题包含一些关于存储的元素,我试着一个接一个地跳转到它们。
考虑客户数据:(我指的是应该安全正确存储的数据)
关于数据库存储,由于您已决定使用BlueMix,请尽可能使用外部数据存储。从RDBMS到NoSql的所有类型的云存储都以非常优惠的价格提供。
如果您想使用自己的数据库和数据存储,可以使用挂载到Docker容器中的主机文件系统,并确保正确设置和备份它们。您只需使用Docker中的-v
装载卷即可实现此目的。
如果您愿意,还可以使用名为“数据容器”的内容。 Docker可以在docker容器内提供数据卷,它们独立于容器生命周期,并且永远不会收集垃圾。它是如何工作的,是你使用-v
但没有主机路径创建一个带有卷的虚容器。然后你启动另一个容器并使用--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
您还可以将数据存储到云数据存储中,例如Elastic支持Amazon S3以进行存储快照,这样您就可以依赖它,对我来说这听起来并不是万无一失,但无论如何它都是一个选项: - )
下一个类别是从您的容器生成的数据,但它实际上并不是客户数据,如日志信息。对于那些还有几个选项:
您可以再次从主机安装卷并在主机中存储数据,备份并使用logstash发送到某处。例如。
您可以使用各种日志插件和容器直接从docker守护程序收集数据,例如:loggly或logentries等等。
您可以将syslog /dev/syslog
套接字直接挂载到应用程序的容器中,然后将数据发送到主机syslog,然后使用各种可用机制收集它们。
如果你正在使用systemd
,那么journald
已经获得了所有的泊坞日志,因此如果它进入stdout
或stderr
你的应用程序日志可以使用journalctl
收集并做任何你想做的事。
这些只是冰山一角。如果您需要更多信息,请告诉我,也许我可以提供帮助。