当我使用包含卷规范的命令创建具有2个所需实例的容器组时,如下所示:
> ... -v log_vol:/opt/ibm/logs --env
> LOG_LOCATIONS=/opt/ibm/logs/messages.log,/opt/ibm/logs/debug.log,/opt/ibm/logs/trace.log
> -e TRACE_LEVEL=*~info -e MAX_LOG_FILES=5 -e MAX_LOG_FILE_SIZE=20 ...
在这种情况下,该组的每个单独的running-container-instance都有一个类似的目录/opt/ibm/logs/
来存储日志。
当单个容器实例中的应用程序生成日志时,日志数据会在挂载到名为log_vol
的共享卷时丢失。每个新条目都会替换日志。
答案 0 :(得分:2)
在这种情况下,最好将卷视为类似于共享网络驱动器的东西,其中单独的容器在不同的主机上运行。如果进程假设他们是唯一一个写入文件,并在每次写入时缓存/覆盖,那么这就是结果。
或许让容器/程序写入类似/opt/ibm/logs/messages.$HOSTNAME.log
的内容,以便他们拥有自己的日志文件的假设是正确的?或者类似地,让容器在启动时为自己创建/opt/ibm/logs/$HOSTNAME/
,然后写入那里的messages/debug/trace.log
?