如何在单个主机中分隔多个容器的日志?

我必须使用相同的应用程序运行多个容器。 但是,日志逻辑在应用程序下,将其写入日志文件。

在这种情况下,如何在不修改应用程序日志代码的情况下,为应用程序分离不同实例的日志。

编辑

  • 我们希望日志是持久的。
  • 我们也希望日志文件存放在主机的同一目录下,如/var/log/app/*.log。 这主要用于与以前的设置保持一致。
  • 我们不能修改日志逻辑就是我们正在testing使用docker。 我们需要该应用程序在docker和正常情况下运行,无需修改代码,只需在docker中添加对testing的支持即可。
  • 目前,我们要使用共享卷,因为所有的应用程序几乎都将开发日志写入文件。

如前所述,如果该日志文件位于容器内,则只要应用程序的每个实例都在其自己的容器中启动,该文件就会因容器而异。

但是您也可以使用docker logs --follow <containerID>命令监视每个容器的docker logs --follow <containerID>
而且您可以使用日志驱动程序更改这些日志的定向位置。

我们希望日志是持久的
我们也希望日志文件存放在主机的同一目录下,如/var/log/app/*.log

一种select是将不同的主机文件挂载到每个应用程序实例的同一个容器文件中:

 docker run -v /var/log/app/app1.log:/path/to/log ... docker run -v /var/log/app/app2.log:/path/to/log ... docker run -v /var/log/app/app3.log:/path/to/log ... 

我可以得到泊坞窗容器id与env为别的东西,并追加它作为后缀?

当你启动你的容器( docker run )时,还没有ID。

但是一旦启动容器,就可以通过docker ps获得它的ID,并将符号链接到你的日志文件。

 ln -s app1.log app1_ID.log