logging - 跨容器共享数据

标签 logging docker volumes

我有一个正在运行应用程序服务器的docker容器。生成应用程序日志并将其存储在特定目录中。在我的方案中,在该位置生成并存储了多个日志文件和跟踪。

我可以理解,有多种方法可以访问这些日志,例如

docker exec -it <container_id> bash
ssh into the container (when the keys are set while creating the container)


除了以上两个示例,我想通过另一个容器(运行Nginx Web服务器)访问日志。从理论上讲,我可以理解在为应用程序服务器创建docker容器(第一个容器)时使用“--volumes-from”的概念,但是我不知道如何使它工作。

我的要求是,无论何时生成日志,都应通过其他容器的Web服务器提供日志。有没有办法像目录列表一样看到整个日志目录的目录列表(通过Volumes ???)。

我尝试了这样的事情,但无法正常工作
docker run --name=log_webserver -p 80 --volumes-from logvol:/website_files nginx

docker run --name appcontainer -m 1024 -p 9080 -v sysvol:/var/log/rsyslog -v logvol:/opt/servers/simpleappserver/logs krckumar/simpleappserver

还有其他公开日志的方法吗?请提出建议。

最佳答案

docker run --name container1 -v /website_files
docker run --name container2 --volumes_from container1

暴露日志....
docker logs -f container1

如果您在ENTRYPOINT脚本中使用-f日志记录,则此方法有效-由于docker以进程为中心,tail -f还可防止容器退出。由于tail -f永远不会结束,因此您的容器将永远不会退出。所以你可以调查里面发生了什么
docker exec -it container1 bash

请问其他任何问题。

PS,如果使用多个容器,则可能要考虑使用docker-compose,这很容易学习,并且完全基于docker命令本身。

关于logging - 跨容器共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35864823/

相关文章:

kubernetes - 在GCP的不同节点上,将一个Pod生成的文件挂载到另一个Pod(在启动之前)的最佳方法是什么?

java - Log4j2 DefaultRolloverStrategy 的 max 属性如何真正起作用?

python - 将用户事件记录到 Django 中的文件

docker - 应用程序日志文件到 ELK

mongodb - Bluemix IBM Container 与 Mongodb 连接失败

mongodb - 将数据容器的卷映射到卷

docker -/usr/bin/被授权为Docker首选项中的卷共享的默认位置?

ruby-on-rails - Heroku可以使用什么级别的日志记录?

logging - VB6-如何在启动应用程序时在VB6中创建日志文件

适用于 Mac 的 Docker : Host network and port publishing