docker logs 使用笔记

docker日志类型分为docker自身运行的Daemon日志内容和docker容器日志内容类型,docker打印日志方式普遍采用向标准输出(stdout)中打印日志、设置日志文件向此文件输出日志。

docker logs 实现原理

对于使用过docker 容器的人员来说,对于docker logs命令应该非常熟悉了,那么docker logs是如何把容器中的标准输出日志打印出来的呢?
    当我们输入docker logs的时候会转化为Docker Client向Docker Daemon发起请求,Docker Daemon 在运行容器时会去创建一个协程(goroutine),绑定了整个容器内所有进程的标准输出文件描述符。因此容器内应用的所有只要是标准输出日志,都会被 goroutine 接收,Docker Daemon会根据容器id和日志类型读取日志内容(如图所示),最终会输出到用户终端上并且通过json格式存放在/var/lib/docker/containers目录下。


docker logs.png

docker logs命令使用简介

 docker logs [OPTIONS] CONTAINER
  Options:
        --details        显示更多的信息
    -f, --follow         跟踪日志输出,最后一行为当前时间戳的日志
        --since string   显示自具体某个时间或时间段的日志
        --tail string    从日志末尾显示多少行日志, 默认是all
    -t, --timestamps     显示时间戳

无参数:直接显示容器的所有日志信息
tail:从尾部开始按需显示容器日志
since:从某个时间开始显示容器日志
timestamp:显示容器日志时显示日志时间戳
f:将当前时间点,容器日志文件 -json.log 中的日志信息全部打印;此时间点之后所有的日志信息与日志文件无关,直接接收goroutine 往日志文件中写的文件描述符,并显示
总而言之,Docker 容器日志的处理并不会很复杂。

你可能感兴趣的:(docker logs 使用笔记)