使用 Docker 存储数据的好策略?
Good strategy for storing data using Docker?
对于我的应用程序,我正在考虑使用 Docker 容器,我想在容器中 运行 一些复杂的 CRM 系统,例如 SugarCRM,我的问题是关于 VOLUMES 和数据存储?
我正在考虑使用 IBM Bluemix Containers,我想知道我应该如何在外部服务中存储数据?在容器内?你认为最好的策略是什么?也许我不理解容器的概念,它们应该只用作托管应用程序的临时环境吗?
你的问题很宽泛,可以说 "best strategy" 没什么。我尽力引导您走向正确的方向希望对您有所帮助。
你的问题包含关于存储的几个要素,我试着简单地一一跳到它们。
考虑客户数据:(我指的是应该安全正确存储的数据)
关于数据库存储,既然您决定使用 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,因此您可以依赖它,对我来说这听起来不是万无一失,但无论如何它是一个选项: -)
下一类是从您的容器生成的数据,但它实际上不是客户数据,例如日志记录信息。对于那些也有几个选项:
您可以再次从主机挂载卷并将数据存储在您的主机中,例如使用 logstash 备份并发送到某处。
您可以使用各种直接从 docker 守护程序收集数据的日志记录插件和容器,例如:loggly 或 logentries 等等。
您可以将 syslog /dev/syslog
套接字直接挂载到应用程序的容器中,并将数据发送到主机 syslog,然后使用各种可用机制收集它们。
如果您正在使用 systemd
,那么 journald
已经获得了您所有的 docker 日志,因此如果它进入 stdout
或应用程序日志stderr
你可以使用 journalctl
收集并随心所欲。
这些只是冰山一角。如果您需要更多信息,请告诉我,也许我可以提供帮助。
对于我的应用程序,我正在考虑使用 Docker 容器,我想在容器中 运行 一些复杂的 CRM 系统,例如 SugarCRM,我的问题是关于 VOLUMES 和数据存储?
我正在考虑使用 IBM Bluemix Containers,我想知道我应该如何在外部服务中存储数据?在容器内?你认为最好的策略是什么?也许我不理解容器的概念,它们应该只用作托管应用程序的临时环境吗?
你的问题很宽泛,可以说 "best strategy" 没什么。我尽力引导您走向正确的方向希望对您有所帮助。
你的问题包含关于存储的几个要素,我试着简单地一一跳到它们。
考虑客户数据:(我指的是应该安全正确存储的数据)
关于数据库存储,既然您决定使用 BlueMix,请尽可能使用外部数据存储。从 RDBMS 到 NoSql 的各种云存储都以非常优惠的价格提供。
如果您想使用自己的数据库和数据存储,您可以使用安装到 docker 容器中的主机文件系统,并确保它们已设置并且 backed-up 正确。您可以通过在 Docker.
中使用 如果你愿意,你也可以使用一个叫做 '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,因此您可以依赖它,对我来说这听起来不是万无一失,但无论如何它是一个选项: -)
-v
安装您的卷来实现此目的下一类是从您的容器生成的数据,但它实际上不是客户数据,例如日志记录信息。对于那些也有几个选项:
您可以再次从主机挂载卷并将数据存储在您的主机中,例如使用 logstash 备份并发送到某处。
您可以使用各种直接从 docker 守护程序收集数据的日志记录插件和容器,例如:loggly 或 logentries 等等。
您可以将 syslog
/dev/syslog
套接字直接挂载到应用程序的容器中,并将数据发送到主机 syslog,然后使用各种可用机制收集它们。如果您正在使用
systemd
,那么journald
已经获得了您所有的 docker 日志,因此如果它进入stdout
或应用程序日志stderr
你可以使用journalctl
收集并随心所欲。
这些只是冰山一角。如果您需要更多信息,请告诉我,也许我可以提供帮助。