docker 日志

289 阅读2分钟

docker daemon 日志

docker deamon 日志存储

ubuntu 18.04 docker daemon 由 systemd 启动,日志由 journald 收集存储

docker daemon 日志查询

journal -u docker 

docker 容器日志

docker 容器日志实质

容器内进程的标准输出 标准错误输出 信息 是容器日志。 注意:docker exec 进入容器创建的进程的 输出 ,无法作为容器的日志 被收集。

谁在执行 docker 容器日志的收集

docker 容器创建的时候,docker deamon 会启动一个协程,来收集容器内应用的标准输出和标准错误输出。

容器日志的存储位置

ubuntu 18.04 默认的情况下 容器日志在 /var/lib/docker/containers/容器id 目录之中存储

docker 获取容器内日志的方式

docker logs 容器id 注意:只有容器的日志驱动为 local json-file journald 的时候 docker logs 才能获得日志。

日志驱动

日志驱动的含义

自己的理解:容器日志被 docker daemon 收集之后,应该存放的目的地。

日志驱动的种类

none : 运行的容器没有日志,docker logs也不返回任何输出。 local : 日志以自定义格式存储,旨在实现最小开销。 json-file: 日志格式为JSON。Docker的默认日志记录驱动程序。 syslog: 将日志消息写入syslog。该syslog守护程序必须在主机上运行。 journald: 将日志消息写入journald。该journald守护程序必须在主机上运行。 gelf: 将日志消息写入Graylog扩展日志格式(GELF)端点,例如Graylog或Logstash。 fluentd: 将日志消息写入fluentd(转发输入)。该fluentd守护程序必须在主机上运行。 awslogs: 将日志消息写入Amazon CloudWatch Logs。 ....

docker 默认的日志驱动 是什么?

json-file 

操作

获取docker daemon 的日志驱动的类型

docker info | grep "Logging Driver"

查看一个容器的日志驱动类型

docker inspect -f '{{.HostConfig.LogConfig.Type}}' 容器id

配置 docker daemon 的日志驱动类型

在 /etc/docker/daeom.json 文件之中配置 ,配置参数为 log-driver 然后重启即可, log-opt 包含 日志驱动的参数

配置 docker 容器的日志驱动类型

docker run 的时候 使用 --log-driver 参数 和 --log-opt 参数即可。

docker daemon 将 日志 写入日志驱动 的模式

1: blocking 2: non-blocking

blocking 与 non-blocking 模式的说明

阻塞模式:默认传输模式,日志信息直接传递给log-driver 非阻塞模式: 为每个容器分配一个缓冲队列,日志信息首先放入缓冲队列,log-driver消费队列中的日志。 当缓冲队列满时,为了保证新的日志消息继续加入队列,队列中最老的日志将会被删除。

容器 设置 写入日志驱动的模式

docker run --log-opt mode=non-blocking 类似于这样, 使用 --log-opt 参数,设置选项 mode=non-blocking 来指定模式

其他内核网络参数

net.bridge.bridge-nf-call-iptables