2016-03-08 123 views
1

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

我可以理解,有多种方式来访问这些日志 - 如

docker exec -it <container_id> bash 
ssh into the container (when the keys are set while creating the container) 
从上面的两个例子

除了,我想通过不同的容器来访问日志(其正在运行一个nginx网络服务器)。从理论上讲,我可以理解,在为应用服务器(第一个容器)创建码头容器时使用“--volumes-from”的概念我们可以实现,但我不知道如何使其工作。

我的要求是每当生成日志时,都应该通过其他容器的网络服务器提供服务。有没有办法像目录列表一样查看整个日志目录的目录列表(通过卷???)。

我想这样的事情及其预期

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 

任何其他的方式来揭露日志不工作?请建议。

+0

查看[this](http://nathanleclaire.com/blog/2015/04/27/automating-docker-logging-elasticsearch-logstash-kibana-and-logspout/)。这是一种内存饥饿,但在我的情况下,它会自动收集已启动并正在运行的容器中的日志。 –

回答

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

,露出原木做....

docker logs -f container1 

这个作品,如果您尾-f在入口点脚本日志 - 尾-f还可以防止容器出口,因为码头工人是流程为中心。因为tail -f永远不会结束,所以你的容器永远不会退出。所以你可以调查里面发生了什么

docker exec -it container1 bash 

更多问题请教。

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