• 今天跟大家聊聊docker的日志!


    Docker日志概念

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

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

    Docker 容器又何尝不是?日志就像一根时间轴,你在或者不在,他都在那。有人对其善意,有人却对其随意。如若不信,可以回忆,自己是否善待 Docker 容器的日志

    1. 传统应用的日志

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

    所有的容器通过Docker Daemon启动,实际上属于Docker的一个子进程, 它可以拿到你的容器里面进程的标准输出,然后拿到标准输出之后,会通过它自身的一个叫做LogDriver的模块来处理,LogDriver就是Docker用来处理容器标准输出的一个模块。 Docker支持很多种不同的处理方式,比如你的标准输出之后,在某一种情况下会把它写到一个日志里面。

    1. Docker日志如何使用

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

      2. 项目中所有日志stdout标准输出,此时我们利用Docker的日志系统去收集日志

    如何查看Docker日志?

    可以通过docker logs containerID命令查看容器的日志

    $ 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如何在微服务项目中使用!

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

    欢迎关注我的公众号!里面可以加入微信技术交流群!
  • 相关阅读:
    【计算机视觉】关于OpenCV中GPU配置编译的相关事项
    【计算机视觉】关于OpenCV中GPU配置编译的相关事项
    【miscellaneous】如何利用硬盘号和CPU序列号为软件加密
    【miscellaneous】如何利用硬盘号和CPU序列号为软件加密
    【miscellaneous】软件加密方法
    【miscellaneous】软件加密方法
    【计算机视觉】双目测距(六)--三维重建及UI显示
    【计算机视觉】双目测距(六)--三维重建及UI显示
    【计算机视觉】双目测距(四)--罗德里格斯变换
    【计算机视觉】双目测距(四)--罗德里格斯变换
  • 原文地址:https://www.cnblogs.com/1ssqq1lxr/p/14611349.html
Copyright © 2020-2023  润新知