首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于数据库、日志和度量的Docker卷容器

用于数据库、日志和度量的Docker卷容器
EN

Stack Overflow用户
提问于 2017-06-13 09:55:32
回答 1查看 1.2K关注 0票数 3

我有一个应用程序,该应用程序使用嵌入式DB,并为以下目录结构生成日志和原始指标:

代码语言:javascript
复制
/opt/myapp/data/
  database/
  logs/
  raw_metrics/

我正在学习Docker,并试图"Dockerize“这个应用程序,并试图找到一个安装/卷解决方案,为我完成以下目标:

  • 无论我运行了多少个myapp容器实例,嵌入式数据库都存储在相同的挂载卷中。换句话说,所有容器实例都将其数据写入共享的database/卷;
  • 对于我的日志和原始度量(即:所有容器实例都将日志/度量写入相同的共享卷),我也希望使用相同的方法,但这里我需要能够区分每个容器的日志和度量数据。换句话说,我需要知道容器X生成了特定的日志消息,或者容器Y在7秒内响应了请求,等等。

我想知道码头的标准程序是什么。在阅读了正式的Docker文档和这篇关于码头卷的文章之后,我尝试的方法是:

  1. 创建数据卷容器并将其挂载到主机上的/opt/myapp
  2. 然后,我可以将我的嵌入式数据库配置为从/写它们读取DB内容到/opt/myapp/database,我相信(如果我正确地理解了所读取的内容),所有容器实例都将共享相同的DB。
  3. 以某种方式将容器ID或其他一些唯一标识符注入每个容器实例,并重构我的日志和度量代码,以便在生成日志或原始度量时包含注入的ID,这样我就可以拥有一个/opt/myapp/logs/containerX.log文件、一个/opt/myapp/logs/containerY.log文件等,但我非常感兴趣的是,在Docker容器之间进行日志聚合的标准实践是什么!

此外,而且可以说更重要的是,我不确定这个解决方案是否能在多主机场景中工作,因为我有一个群集/集群在多个主机上运行数十个myapp容器。我的数据卷容器会在所有主机上神奇地同步/opt/myapp卷吗?如果不是,为容器安装共享卷的解决方案是什么,而不管它们在哪个主机上运行?提前感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-13 11:13:56

有多个好问题。以下是我的一些答案。

  1. Docker使用的默认日志驱动程序是json文件。这将捕获json格式的stdout和stderr。还有其他日志记录驱动程序(如syslog、fluentd、LogEntries等)可以发送到中央日志服务器。使用中央日志也避免了自己维护卷的问题。这里捕获了所有Docker日志驱动程序(https://docs.docker.com/engine/admin/logging/overview/#supported-logging-drivers)
  2. 如果对服务使用群集模式,则存在服务日志的概念,其中服务日志包含与服务关联的所有容器的日志。(原木/)
  3. 默认情况下,Docker日志包含容器id,这是由日志记录驱动程序添加的。我们可以使用日志选项(标签/)对其进行定制。
  4. 为了在数据库等容器之间共享数据,如果容器位于同一主机上,则可以使用基于主机的卷。这将不能跨节点工作,因为没有自动同步。为了在节点间共享容器数据,我们可以使用共享文件系统(如nfs、c年会、gluster)或Docker卷插件(ebs、gce)。
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44518131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档