我有一个运行应用程序服务器的docker容器。生成应用程序日志并将其存储在特定目录中。在我的场景中,有多个日志文件和跟踪生成并存储在该位置。
我可以理解,有多种方法可以访问这些日志 - 例如
docker exec -it <container_id> bash ssh into the container (when the keys are set while creating the container)
除了上面两个例子,我想通过一个不同的容器(运行nginx webserver)访问日志。从理论上讲,我可以理解使用&#34; - volume-from&#34;在为app服务器(第一个容器)创建docker容器时,我们可以实现,但我不知道如何使它工作。
我的要求是每当生成日志时,都应该通过其他容器的网络服务器提供。有没有办法可以看到整个日志目录的目录列表(通过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
任何其他公开日志的方法?请建议。
答案 0 :(得分:2)
docker run --name container1 -v /website_files
docker run --name container2 --volumes_from container1
公开日志做....
docker logs -f container1
如果您在ENTRYPOINT脚本中尾部显示日志,则此方法有效 - tail -f也会阻止容器退出,因为docker是以进程为中心的。因为tail -f永远不会结束,所以你的容器永远不会退出。所以你可以用
来调查里面发生的事情docker exec -it container1 bash
再问任何问题。
PS如果使用多个容器,您可能需要考虑使用docker-compose,这很容易学习并完全基于docker命令本身。