我刚刚开始使用Docker和Richt,现在我试图弄清楚如何设置我的第一个dockerized Apache 2 / PHP环境。 到目前为止,我一直在使用完整的Linux虚拟机,在这里我使用了写入/ var / log / apache2的日志文件,然后每天使用“logrotate”跳转到一个新文件。
日志文件主要用于即时错误检测(即,login到服务器,使用less来打开当前的access.log和error.log文件)以及fail2ban。
如果我是正确的,在Docker环境中是不可行的 – 主要是因为通常无法login容器来查看日志。 如果容器被移除,日志也将丢失。
那么:在这种情况下,使用/模拟/replaceaccess.log / error.log最常用的方法是什么? 什么是生产和开发环境的常见解决scheme?
我的想法到目前为止包括使用一个NFS共享(缓慢,如果不小心可能会导致文件名冲突)和logstash (不知道是否值得为小型网站,甚至开发环境的努力和实际可行?),但我相信聪明的人想出了更好的解决scheme?
不知道它是否有所作为,但目前我基于我的Docker图像在PHP:5.6-apache 。
您仍然可以使用docker exec -it <your container name> /bin/bash命令进入您的容器并执行常规工作。 或者,也许你可以改变/bin/bash到你的命令的命令或脚本.sh来执行它。
要将文件从容器中移出,请使用docker cp <container name:/path/to/file> </your local machine/path/>
而对于你的日常工作,你可以使用cron来cronjob这些命令。 我高度推荐你有你的频繁docker命令的别名。 这样我就可以用几个键快乐地使用docker。
docker log命令用于查看执行泊坞窗镜像的日志。 由于它只是输出到标准输出,它可能不是你想要的。
我也是新来的docker工,只用了2个月。 我想我知道不习惯的痛苦点。 这是我的第一个答案。 请不要投票给我。 请告诉我错了什么。
如何将访问和错误日志写入stderr和stdout?
https://gist.github.com/afolarin/a2ac14231d9079920864
运行ln -sf / dev / stdout /var/log/nginx/access.log
运行ln -sf / dev / stderr /var/log/nginx/error.log
使用ELK进行集中logging将允许更主动的监视。 但是你自己已经想到了那个。
到目前为止,我已经发现“ docker日志 ”被多次提及。
我是一个绝对的Docker newb,所以可能会解决我的问题 – 但到目前为止,我还没有完全理解这个命令背后的概念。
Docker似乎保留在/ var / lib / docker / containers /中的JSON文件中的所有stdout输出,并给了我一个机会,通过日志命令访问它们。
到目前为止,我不知道如何实际使用输出。