如何在单个主机中分隔多个容器的日志?
我必须使用相同的应用程序运行多个容器。 但是,日志逻辑在应用程序下,将其写入日志文件。
在这种情况下,如何在不修改应用程序日志代码的情况下,为应用程序分离不同实例的日志。
编辑
- 我们希望日志是持久的。
- 我们也希望日志文件存放在主机的同一目录下,如/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