使用Docker存储数据的好策略?
对于我的应用程序,我正在考虑使用Docker容器,我想在容器中运行一些复杂的CRM系统,比如SugarCRM,我的问题是我的VOLUMES和数据存储的策略是什么?
我正在考虑使用IBM Bluemix Containers,我想知道如何将数据存储在外部服务中? 在容器内? 你认为最好的策略是什么? 也许我不理解容器的概念,它们是否只能用作主办应用程序的无环境环境?
你的问题非常广泛,没有什么可以说是最好的策略。 我尽我所能来指导你正确的方向,我希望有所帮助。
你的问题包含有关存储的几个元素,我试着简单地跳到他们一个一个。
-
考虑到客户的数据:(通过我指的是应该安全和正确地存储的数据)
-
关于数据库存储,因为您已经决定使用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以进行存储快照,因此您可以依靠这一点,对我来说,这听起来不错,但无论如何它都是一个选项:-)
-
-
下一个类别是从您的容器生成的数据,但实际上并不是客户数据,例如日志logging信息。 对于那些也有几个选项:
-
您可以再次从主机装载卷并将数据存储在主机中,例如使用logstash进行备份和发送。
-
您可以使用各种日志插件和容器直接从docker守护进程收集数据,如:loggly或logentries等等。
-
您可以将syslog
/dev/syslog
套接字直接安装到您的应用程序容器中,并将数据发送到您的主机系统日志,然后使用各种可用的机制收集它们。 -
如果你使用的是
systemd
那么journald
已经得到了你所有的journald
日志,因此如果它应用到stdout
或者stderr
你可以使用journalctl
来收集并且做你想做的事情。
-
这只是冰山一angular。 如果你需要更多的信息,请让我知道,也许我可以帮助。