若是时光能够倒流,现实世界的每一步均可以分解到最小,记录下来,就是日志。万物即日志。nginx
面对历史,审视日志,能够选择忘却,也能够选择铭记;经历过的,能够选择珍藏,一样也可让它尘封。docker
Docker 容器又未尝不是?日志就像一根时间轴,你在或者不在,他都在那。有人对其善意,有人却对其随意。如若不信,能够回忆,本身是否善待 Docker 容器的日志json
传统应用的日志vim
Docker 时代的日志api
全部的容器经过Docker Daemon启动,实际上属于Docker的一个子进程, 它能够拿到你的容器里面进程的标准输出,而后拿到标准输出以后,会经过它自身的一个叫作LogDriver的模块来处理,LogDriver就是Docker用来处理容器标准输出的一个模块。 Docker支持不少种不一样的处理方式,好比你的标准输出以后,在某一种状况下会把它写到一个日志里面。编辑器
Docker日志如何使用微服务
项目中使用log4j等工具写入到容器中某个目录,而后经过启动启动时候去挂载到主机目录,这是一种常见的使用手段(本文不探讨这种方式)工具
项目中全部日志stdout标准输出,此时咱们利用Docker的日志系统去收集日志学习
能够经过docker logs containerID
命令查看容器的日志ui
$ docker logs [OPTIONS] CONTAINER
Options:
--details 显示更多的信息
-f, --follow 跟踪实时日志
--since string 显示自某个timestamp以后的日志,或相对时间,如42m(即42分钟)
--tail string 从日志末尾显示多少行日志, 默认是all
-t, --timestamps 显示时间戳
--until string 显示自某个timestamp以前的日志,或相对时间,如42m(即42分钟)
下列为Docker经常使用的一些日志命令:
$ docker logs -f -t --since="2021-04-01" --tail=10 CONTAINER_ID
$ 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
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
选项 | 描述 |
---|---|
none | 不使用日志 |
local | 自定义日志驱动 |
json-file | 默认json存储的日志 |
syslog | 日志写入到指定的syslog地址 |
journald | 日志写入到指定jounald |
fluentd | 日志写入到指定fluentd服务 |
awslogs | 日志发送到指定的Amazon CloudWatch Logs |
splunk | 日志发送到指定的splunk服务 |
gcplogs | 日志发送到Google Cloud日志系统 |
logentries | 日志发送到Rapid7 Logentries |
如何使用驱动?
修改Docker Daemon, 这样会对全部容器生效, fluentd:
dockerd --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224
在容器启动时加上配置项, 这样配置只会对当前容器生效:
docker run --log-driver=fluentd --log-opt fluentd-address=192.168.0.133:24224 nginx
下篇讲解Docker-Swarm如何在微服务项目中使用!
欢迎关注公众号! 公众号回复:
入群
,扫码加入咱们交流群!