使用Docker运行应用程序的多个实例时,是否有最佳实践logging?

我正在尝试创build一个将在多台机器上的多个Docker实例上运行的应用程序。 由于我的容器将运行nginx作为他们的命令, docker logs将显示nginx日志的输出,这很好。 但是,这引出了一个问题:我的应用程序应该在哪里login?

我想过的选项如下。

login主机文件系统

据我所知,为了能够识别哪个Docker容器已经写入日志,我必须创build类似/var/logs/myapplication ,并为每个容器创build一个文件夹,并告诉我的应用程序在容器内写入进入该目录。 例如,我将不得不创build/var/logs/myapplication/instance-1并将其作为一个卷装入我的Docker容器中。

这种方法的问题是很难收集日志。 我将不得不ssh到不同的机器,进入每台机器的/var/logs/myapplication目录,并获取日志读取它们。 当我知道有一个问题时,这很好,但是当我试图监视整个系统的时候会感到困惑。

login数据库

在这种方法中,所有Docker容器都将写入数据库,并且数据库的其中一列将是container_name以便可以根据容器名称筛选日志。

这种方法的问题是,我从来没有使用数据库来保存日志,我真的不知道他们是否应该这样使用。

回到原来的问题

所以我的问题是,当你有多台机器上有多个容器的时候,是否有经过validation的最佳实践?