用于数据库、日志和度量的Docker卷容器
我有一个应用程序,该应用程序使用嵌入式数据库,并生成日志和原始指标,以用于以下目录结构:用于数据库、日志和度量的Docker卷容器,docker,docker-volume,docker-networking,Docker,Docker Volume,Docker Networking,我有一个应用程序,该应用程序使用嵌入式数据库,并生成日志和原始指标,以用于以下目录结构: /opt/myapp/data/ database/ logs/ raw_metrics/ 我正在学习Docker,并尝试将此应用程序“Dockerize”,并试图找到一个安装/音量解决方案,以实现以下目标: 无论运行了多少个myapp的容器实例,嵌入式数据库都存储在相同的装入卷中。换句话说,所有容器实例都将其数据写入共享的数据库/卷;及 对于我的日志和原始度量(即:所有容器实例都将日志/度
/opt/myapp/data/
database/
logs/
raw_metrics/
我正在学习Docker,并尝试将此应用程序“Dockerize”,并试图找到一个安装/音量解决方案,以实现以下目标:
- 无论运行了多少个
的容器实例,嵌入式数据库都存储在相同的装入卷中。换句话说,所有容器实例都将其数据写入共享的myapp
卷;及数据库/
- 对于我的日志和原始度量(即:所有容器实例都将日志/度量写入同一个共享卷),我也希望使用相同的方法,但这里我需要能够区分每个容器的日志和度量数据。换句话说,我需要知道容器X生成了一个特定的日志消息,或者容器Y在7秒内响应了一个请求,等等
/opt/myapp
/opt/myapp/database
读取/写入DB内容,我相信(如果我正确理解所读取的内容),所有容器实例都将共享相同的DB/opt/myapp/logs/containerX.log
文件,一个/opt/myapp/logs/containerY.log
文件,等等,但我对Docker容器中日志聚合的标准实践非常感兴趣强>此外,可以说更重要的是,我不确定这种解决方案是否适用于多主机场景,在这种场景中,我的群集/集群在多台主机上运行几十个
myapp
容器。我的数据卷容器会在所有主机上神奇地同步/opt/myapp
卷吗?如果不是,那么无论容器运行在哪台主机上,为容器装载共享卷的解决方案是什么?提前谢谢 有很多好问题。以下是我的一些答案
感谢@Sreeni(+1)-关于您上面关于日志驱动程序的第一个要点:我想我可能要做的是使用
syslog
驱动程序并在主机上配置syslog
。但我相信(如果我错了,请纠正我!),这需要我将我的应用程序更改为登录到STDOUT或STDERR,对吗?如何为内部应用程序必须登录到文件的Docker容器配置syslog
?例如,如果我想要一个停靠的FTP服务器,我对该FTP服务器如何记录没有发言权。例如,在特定的Docker映像中,记录是通过设置一个xferlog\u文件来指向一个日志文件。那么,如何使用Docker驱动程序从这些FTP服务器容器中收集日志呢?只是好奇!再次感谢!您可以创建如下符号链接:/path/to/ftp.log->/dev/stdout
,您的ftp会认为这是在写入文件。或者直接告诉他写信给/dev/stdout
“文件”同意@Robert。如果你看这里(),那也是建议的官方方法。实际上,像nginx和httpd这样的容器已经通过在Dockerfile中合并链接或自定义位置实现了这一点,如link中所述。