docker logs-查看docker容器日志

  • 通过docker logs 可以查看容器的日志
  • docker logs 是跟随容器而产生的,如果删除了某个容器,相应的日志文件也会被删除

docker日志内容类型

  • dicker自身运行时Daemon的日志内容
  • docker容器的日志内容

docker logs实现原理

Docker Daemon是Docker架构中一个常驻在后台的系统进程,它在后台启动了一个Server,Server负责接受Docker Client发送的请求;接受请求后,Server通过路由与分发调度,找到相应的Handler来执行请求。–《Docker源码分析》
  • 当我们输入docker logs的时候会转化为Docker Client向Docker Daemon发起请求,Docker Daemon 在运行容器时会去创建一个协程(goroutine),绑定了整个容器内所有进程的标准输出文件描述符。因此容器内应用的所有只要是标准输出日志,都会被 goroutine 接收,Docker Daemon会根据容器id和日志类型读取日志内容,最终会输出到用户终端上并且通过json格式存放在/var/lib/docker/containers目录下

命令参数

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

例子

  • 查看指定时间后的日志 只显示最后10行(最新10行日志)
docker logs -f -t --since="2019-11-05" --tail=10 containerID
  • 查看最近10分钟日志
docker logs -f --since=10m containerID
  • 查看某时间之后的日志(经测试不准确)
docker logs -t --since="2019-11-05T13:23:37" containerID
  • 查看某时间段日志(经测试不准确)
docker logs -t --since="2019-11-05T13:23:37" --until "2019-11-05T12:23:37" containerID

参考文章

  • 从敲下docker logs开始理解docker日志原理
  • docker logs-查看docker容器日志

你可能感兴趣的:(Docker,知识总结)