zoukankan      html  css  js  c++  java
  • 今天跟大家聊聊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如何在微服务项目中使用!

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

    欢迎关注我的公众号!里面可以加入微信技术交流群!
  • 相关阅读:
    【纯水题】POJ 1852 Ants
    【树形DP】BZOJ 1131 Sta
    【不知道怎么分类】HDU
    【树形DP】CF 1293E Xenon's Attack on the Gangs
    【贪心算法】CF Emergency Evacuation
    【思维】UVA 11300 Spreading the Wealth
    【树形DP】NOI2003 逃学的小孩
    【树形DP】BZOJ 3829 Farmcraft
    【树形DP】JSOI BZOJ4472 salesman
    【迷宫问题】CodeForces 1292A A NEKO's Maze Game
  • 原文地址:https://www.cnblogs.com/1ssqq1lxr/p/14611349.html
Copyright © 2011-2022 走看看