Docker日志那点事
2017-05-04 11:29
169 查看
一套软件系统的整个生命周期中,其中超过80%的时间都是在运维。运维中有几块不可缺,其中监控和日志,虽然没有这么复杂,但却是运维的基础。
docker的出现,颠覆了原基础架构以及应用部署的模式。今天聊一下docker环境的日志。
我们先准备个测试环境
先在我们的docker host上起一个tomcat的容器
输入命令docker search tomcat
我们选择STARS最高的一个镜像
然后pull下来
docker pull docker.io/tomcat
我们使用docker images 找到下载完成的镜像
现在我们启动一个tomcat的容器
docker run -d -p 8080:8080 docker.io/tomcat
启动成功后,我们可以看到完整的容器id
7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我们也可以使用docker ps 查看我们刚才启动的容器
但是container id 会被阶段,显示并不完整,但是实际上显示部分已经是唯一的了
docker ps --no-trunc 命令可以不截断完整的id
大家要记住这个id号,这个很重要
基础环境已经准备好了。
我们现在要开始查看这个容器的日志了
我们输入(命令格式docker logs container-id)docker logs 7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我们会看到有日志打出,屏幕上显示的都是tomcat的日志
使用docker logs还有几个参数可以选择 例如 –t 是显示时间,时间会精确到秒后9位
而使用 docker logs –f 则是实时输出日志
重点来了,为什么容器内的日志可以通过docker logs查看呢?是因为容器内应用的日志都输出到标准输出了(打到console,或者打到屏幕上,这样说比较容易理解)
如果你的日志还是写在文件里,那是无法通过docker logs查看的!
问题来了,如果有人说:我不想通过docker logs查看日志,我想直接拿到日志文件,那文件在哪里呢?
文件在这个位置
/var/lib/docker/containers/
进入这个目录我ls了一下,然后我就惊呆了! 这都是什么呀
我的确进入了一个计算机的世界!
别急,这些都是以容器id为名称的文件夹,您需要的日志都在这些文件夹里
还记得我刚才让您记住的容器id么? 我们cd 进入这个目录
还真有这个目录!好神奇
ls一下,发现有一个*-json.log的文件
大哥您要的日志文件在此!
当然如果您公司内部有统一的日志收集系统例如splunk,elk什么,也可以抽取这个位置的日志。
回到刚才中间的聊到的一个问题,如果您的日志写在本地怎么办?
有2个方法,也许不止
1,您可以exec到容器内去查看,具体查看的方法与您之前直接在电脑上查看日志是一样的。
2,您可以在容器启动的时候挂在一个volume,可以将日志写入到这volume上,您可以直接到这个volume里上查看日志。
今天就到这里
客官,这是您的docker 请用好。
docker的出现,颠覆了原基础架构以及应用部署的模式。今天聊一下docker环境的日志。
我们先准备个测试环境
先在我们的docker host上起一个tomcat的容器
输入命令docker search tomcat
我们选择STARS最高的一个镜像
然后pull下来
docker pull docker.io/tomcat
我们使用docker images 找到下载完成的镜像
现在我们启动一个tomcat的容器
docker run -d -p 8080:8080 docker.io/tomcat
启动成功后,我们可以看到完整的容器id
7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我们也可以使用docker ps 查看我们刚才启动的容器
但是container id 会被阶段,显示并不完整,但是实际上显示部分已经是唯一的了
docker ps --no-trunc 命令可以不截断完整的id
大家要记住这个id号,这个很重要
基础环境已经准备好了。
我们现在要开始查看这个容器的日志了
我们输入(命令格式docker logs container-id)docker logs 7df4f4428df4290497abf70c8fee013f405ce22c61c3ca797c57dfd155e28545
我们会看到有日志打出,屏幕上显示的都是tomcat的日志
使用docker logs还有几个参数可以选择 例如 –t 是显示时间,时间会精确到秒后9位
而使用 docker logs –f 则是实时输出日志
重点来了,为什么容器内的日志可以通过docker logs查看呢?是因为容器内应用的日志都输出到标准输出了(打到console,或者打到屏幕上,这样说比较容易理解)
如果你的日志还是写在文件里,那是无法通过docker logs查看的!
问题来了,如果有人说:我不想通过docker logs查看日志,我想直接拿到日志文件,那文件在哪里呢?
文件在这个位置
/var/lib/docker/containers/
进入这个目录我ls了一下,然后我就惊呆了! 这都是什么呀
我的确进入了一个计算机的世界!
别急,这些都是以容器id为名称的文件夹,您需要的日志都在这些文件夹里
还记得我刚才让您记住的容器id么? 我们cd 进入这个目录
还真有这个目录!好神奇
ls一下,发现有一个*-json.log的文件
大哥您要的日志文件在此!
当然如果您公司内部有统一的日志收集系统例如splunk,elk什么,也可以抽取这个位置的日志。
回到刚才中间的聊到的一个问题,如果您的日志写在本地怎么办?
有2个方法,也许不止
1,您可以exec到容器内去查看,具体查看的方法与您之前直接在电脑上查看日志是一样的。
2,您可以在容器启动的时候挂在一个volume,可以将日志写入到这volume上,您可以直接到这个volume里上查看日志。
今天就到这里
客官,这是您的docker 请用好。
相关文章推荐
- 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
- [k8s]融合docker记日志的思路实践
- 6.3.1版本elk+redis+filebeat收集docker+swarm日志分析
- Docker程序之JAVA时区和日志乱码问题
- Docker日志自动化: ElasticSearch、Logstash、Kibana以及Logspout
- CentOS7 安装EFK(elasticsearch、fluent、kibana)进行Docker下日志搜集 - The magic of fingertips - CSDN博客
- 日志管理之 Docker logs - 每天5分钟玩转 Docker 容器技术(87)
- 【读书笔记】docker日志与监控
- Docker 容器日志收集
- 全面提升,阿里云Docker/Kubernetes(K8S) 日志解决方案与选型对比
- ELK+docker+nginx日志分析系统
- Docker 生产环境之配置对象 - 格式化命令和日志的输出
- Docker 学习日志 (二)
- docker日志的故事——详解Docker日志运维
- 详解Docker守护进程的配置及日志
- 跟我一起学docker(15)--监控日志和日志管理
- 日志收集平台Graylog2以及Nxlog的安装与配置(基于docker)
- 使用Docker构建ELK Docker集群日志收集系统
- 使用fluentd管理docker日志
- Java程序放在docker里遇到日志时间不准确