docker logs :
docker logs -f -t --since="2017-05-31" --tail=10 edu_web_1
edu_web_1 为容器名,也可用容器 id 。
参数说明
docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 实时输出日志,最后一行为当前时间戳的日志
--since string 输出日志开始日期,即只输出指定日期之后的日志。
--tail string 显示最后多少行日志, 默认是all
(如: -tail=10 : 查看最后的 10 行日志。)
-t, --timestamps 显示时间戳
使用方法
docker logs 26b12d17fefc
输出日志内容:
nohup: appending output to 'nohup.out'
nohup: appending output to 'nohup.out'
docker logs -t 26b12d17fefc
输出日志内容:
2017-07-03T12:12:29.909710295Z nohup: appending output to 'nohup.out'
2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
docker logs --tail 1 26b12d17fefc
输出日志内容:
nohup: appending output to 'nohup.out'
docker logs -t --tail 1 26b12d17fefc
输出日志内容:
2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
docker logs --since 30m 26b12d17fefc
输出日志内容:
nohup: appending output to 'nohup.out'
docker logs -t --since="2017-07-03T13:58:54.232003809Z" 26b12d17fefc
输出日志内容:
2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
docker logs -t --since="2017-07-03T12:12:29.909710295Z" 26b12d17fefc
输出日志内容:
2017-07-03T12:12:29.909710295Z nohup: appending output to 'nohup.out'
2017-07-03T13:58:54.232003809Z nohup: appending output to 'nohup.out'
容器日志的输出形式
-
stdout 标准输出
-
stderr 标准错误
-
以json格式存放在容器对于到日志文件中
docker日志内容类型
-
docker自身运行时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是跟随容器而产生的,如果删除了某个容器,相应的日志文件也会随着被删除。
转自:https://segmentfault.com/a/1190000010086763