Docker日志那点事

一套软件系统的整个生命周期中,其中超过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 请用好。

时间: 2024-10-03 03:23:19

Docker日志那点事的相关文章

docker日志引擎说明

docker原生支持众多的日志引擎,适用于各种不同的应用场景,本篇文档对其作一个简单的说明. Docker日志引擎说明 docker支持的日志引擎如下: none:关闭docker的回显日志, docker logs 看不到任何输出.使用这种方式也就意味着无法查看任何容器输出的日志 json-file:把每个容器的回显日志打到每个容器的内部, 形式为json 文件.在实际使用中, 有些容器在启动后有大量的回显日志, 尤其在程序内部报错时打出的日志信息尤其巨大, 很可能会因为某几个容器的json

docker 日志分析

日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04).前者一般位于 /var/log/upstart/docker.log 下,后者一般通过 jounarlctl -u docker 来读取.不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考: 系统 日志位置Ubuntu(14.04)

ELK学习实验018:filebeat收集docker日志

Filebeat收集Docker日志 1 安装docker [[email protected] ~]# yum install -y yum-utils device-mapper-persistent-data lvm2 [[email protected] ~]# yum update [[email protected] ~]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/d

docker日志处理

检查docker日志情况 容器日志一般存放在/var/lib/docker/containers/container_id/下面,以json.log结尾的文件(业务日志)很大,查看各个日志文件大小的脚本docker_log_size.sh,内容如下: #!/bin/sh echo "======== start clean docker containers logs ========" logs=$(find /var/lib/docker/containers/ -name *-j

运维之我的docker-使用ELK处理docker日志

因为docker产生的容器不是一个永久存储的文件,所以无法保证你的文件永久保存.建议大家把容器产生的日志通过fluentd,flume,logstash等工具传送到一个日志仓库,这样保证方便保证数据的安全和管理.由于docker官方的推荐,我们本次讲解是fluentd日志收集组件. 具体使用如下: 安装ES 1. 初始化环境 [[email protected] src]# vim /etc/sysctl.conf vm.max_map_count = 290000 [[email protec

Docker 日志位置

日志分两类,一类是 Docker 引擎日志:另一类是 容器日志. Docker 引擎日志 Docker 引擎日志 一般是交给了 Upstart(Ubuntu 14.04) 或者 systemd (CentOS 7, Ubuntu 16.04).前者一般位于 /var/log/upstart/docker.log 下,后者一般通过 jounarlctl -u docker 来读取.不同系统的位置都不一样,SO上有人总结了一份列表,我修正了一下,可以参考: 系统 日志位置 Ubuntu(14.04)

docker 日志方案

docker logs默认会显示命令的标准输出(STDOUT)和标准错误(STDERR).下面使用echo.sh和Dockerfile创建一个名为echo.v1的镜像,echo.sh会一直输出"hello" [[email protected] docker]# cat echo.sh #!/bin/sh while true;do echo hello;sleep 2;done [[email protected] docker]# cat Dockerfile FROM busyb

docker日志清理

前言:docker运行久了,会发现它的映射磁盘空间爆满,尤其是yum安装的docker的 解决方法: 1. 用脚本清理,一般yum安装的docker,其存储空间一般都在/var/lib/docker/containers下面,不同id对应不同容器,这个适用于docker容器运行时 下面是样本: #!/bin/sh logs=$(find /var/lib/docker/containers/   -name  *-json.log) for var  in $logs do echo"clean

公司使用graylog来收集Docker日志

学习一下 Graylog 相信大部分的人都用过或者听说过ELK这个强大的日志栈架构,我们要用的graylog和ELK非常的相似,但是算是后起之秀. 为什么要选择graylog来作为Docker的日志收集平台呢? Docker原生支持graylog协议,直接将日志发送到graylog(通过gelf协议) graylog官方提供了将本身部署在Docker的支持 graylog官方提供了Dockerfile供我们快速的在Docker上部署日志系统dokerFile. 原文地址:https://www.