在微服务架构中,由于容器的数量众多以及快速变化的特性使得记录日志和监控变得越来越重要,考虑到容器的短暂和不固定周期,当我们需要排查问题的时候容器可能不在了。因此,一套集中式的日志管理系统是生产环境中不可或缺的组成部分
docker logs
docker 自带的日志功能
对于一个运行的容器,docker 会将日志发送到容器的标准输出(STDOUT)和标准错误设备(STDERR),stdout和stderr实际上就是容器的控制台终端
例如:
当我们用docker run -p 80:80 httpd运行容器的时候,日志会直接打印在当前的终端
当我们加-d的参数以后台方式运行的时候,我们就看不到日志的输出了
这种情况下要查看日志有两种方法:
1.docker attach到该容器
2.用docker logs命令查看日志
docker attach
当我们attch到一个容器的时候没有看到任何输出,原因是没有产生新的日志
当容器被访问的时候会产生新的日志
attach在实际使用中并不是很方便,这个在我们之前学习进入容器的命令的时候讨论过:
1.只能看到attach之后的日志,之前的日志不可见
2.退出attach非常麻烦,要么就是重新开一个终端,要么就是ctrl+c,但是这种方法会将容器杀死
docker logs
docker logs能够打印出自容器启动以来完整的日志,并且-f参数可以继续持续打印,效果和tail -f一样