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