今天跟你们聊聊docker的日志!

Docker日志概念

若是时光能够倒流,现实世界的每一步均可以分解到最小,记录下来,就是日志。万物即日志。nginx

面对历史,审视日志,能够选择忘却,也能够选择铭记;经历过的,能够选择珍藏,一样也可让它尘封。docker

Docker 容器又未尝不是?日志就像一根时间轴,你在或者不在,他都在那。有人对其善意,有人却对其随意。如若不信,能够回忆,本身是否善待 Docker 容器的日志json

  1. 传统应用的日志vim

    • stdout标准输出日志
    • 经过log4j等工具直接写入硬盘的日志
  2. Docker 时代的日志api

全部的容器经过Docker Daemon启动,实际上属于Docker的一个子进程, 它能够拿到你的容器里面进程的标准输出,而后拿到标准输出以后,会经过它自身的一个叫作LogDriver的模块来处理,LogDriver就是Docker用来处理容器标准输出的一个模块。 Docker支持不少种不一样的处理方式,好比你的标准输出以后,在某一种状况下会把它写到一个日志里面。编辑器

  1. Docker日志如何使用微服务

    1. 项目中使用log4j等工具写入到容器中某个目录,而后经过启动启动时候去挂载到主机目录,这是一种常见的使用手段(本文不探讨这种方式)工具

    2. 项目中全部日志stdout标准输出,此时咱们利用Docker的日志系统去收集日志学习

如何查看Docker日志?

能够经过docker logs containerID命令查看容器的日志ui

$ docker logs [OPTIONS] CONTAINER
  Options:
        --details        显示更多的信息
    -f, --follow         跟踪实时日志
        --since string   显示自某个timestamp以后的日志,或相对时间,如42m(即42分钟)
        --tail string    从日志末尾显示多少行日志, 默认是all
    -t, --timestamps     显示时间戳
        --until string   显示自某个timestamp以前的日志,或相对时间,如42m(即42分钟)

下列为Docker经常使用的一些日志命令:

  • 查看指定时间后的日志,只显示最后10行:
$ docker logs -f -t --since="2021-04-01" --tail=10 CONTAINER_ID

  • 查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID
  • 查看某时间以后的日志:
$ docker logs -t --since="2021-04-01T13:23:37" CONTAINER_ID
  • 查看某时间段日志:
$ docker logs -t --since="2021-04-01T13:23:37" --until "2021-04-01T16:23:37" CONTAINER_ID

Docker日志存储在哪里?

Dcoker默认的存储目录在 /var/lib/docker下,咱们能够经过修改命令修改存储目录:

vim /etc/docker/daemon.json 
#修改到/opt目录下
{
  "data-root": "/opt/docker"
}

查看某个容器的日志目录在哪里:

$  docker inspect -f {{".LogPath"}}  CONTAINER_ID

/var/lib/docker/containers/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log

/var/lib/docker/containers: 默认容器存储地址 2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad:容器id 2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log:容器的日志文件,格式为默认的json-file

Docker日志驱动分类

  • 驱动类型选择
选项 描述
none 不使用日志
local 自定义日志驱动
json-file 默认json存储的日志
syslog 日志写入到指定的syslog地址
journald 日志写入到指定jounald
fluentd 日志写入到指定fluentd服务
awslogs 日志发送到指定的Amazon CloudWatch Logs
splunk 日志发送到指定的splunk服务
gcplogs 日志发送到Google Cloud日志系统
logentries 日志发送到Rapid7 Logentries
  • 如何使用驱动?

    1. 修改Docker Daemon, 这样会对全部容器生效, fluentd:

      dockerd --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224  
    2. 在容器启动时加上配置项, 这样配置只会对当前容器生效:

    docker run --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224  nginx

结束

下篇讲解Docker-Swarm如何在微服务项目中使用!

欢迎关注公众号! 公众号回复:入群 ,扫码加入咱们交流群! 扫码关注公众号获取更多学习资料

相关文章
相关标签/搜索