在 Bluemix 上——处理容器组实例的卷

On Bluemix - handling volume for container group instances

当我使用包含如下卷规范的命令创建一个包含 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 ...

在这种情况下,组中的每个 运行-container-instance 都有一个类似的目录 /opt/ibm/logs/ 来存储日志。

当单个容器实例中的应用程序生成日志时,日志数据会丢失,因为它被装载到名为 log_vol 的共享卷中。每个新条目都会替换日志。

在这种情况下,最好将卷视为类似于共享网络驱动器的东西,在不同的主机上使用单独的容器 运行。如果进程假设它们是唯一写入文件的进程,并且每次写入 caching/overwriting,这将是结果。

也许让 containers/programs 写入类似 /opt/ibm/logs/messages.$HOSTNAME.log 的内容,这样他们拥有自己的日志文件的假设是正确的?或者类似地,让容器在启动时为自己创建 /opt/ibm/logs/$HOSTNAME/,然后写入下面的 messages/debug/trace.log?