docker容器日志分为两类:docker引擎日志(Docker本身运行的日志)和容器日志(各个容器内产生的日志)
一、Docker引擎日志:
Centos系统下的docker引擎日志一般给systemd管理,可通过journalctl -u docker.service命令查看
二、容器日志
1、可通过docker logs 容器id命令显示当前运行的容器log,输出Linux下的STDOU、STDERR,生产环境中,如果应用输出到我们自己的日志文件里,使用docker logs一般收集步到太多重要信息。
2、docker日志驱动
docker ce版本,docker logs命令仅适用于如下驱动程序:
常用的日志驱动主要有:json-file(默认)、local、syslog、journald、fluentd
1)查看docker日志驱动命令
2)查看指定容器设置的日志驱动命令
3)docker日志驱动全局配置文件为/etc/docker/daemon.json
4)日志驱动:local
local日志驱动记录从容器的STDOUT/STDERR输出,并写到主机磁盘上。默认情况下,local日志驱动为每个容器保留100M的日志信息,并启用压缩来保存
local日志驱动存储于/var/lib/docker/containers/容器id/local-logs目录下,以container.log命名,local驱动支持的选项有:
max-size:切割之前日志的最大容量,可取值为k/m/g,默认20m
max-file:可以存在的最大日志文件个数,如果超过最大值,则会删除旧文件,仅在max-size选项设置时有效。默认为5
compress:对应切割日志文件是否启用压缩,默认启用
配置全局日志驱动为local时,需修改/etc/docker/daemon.json文件:
{
"log-driver": "local",
"log-opts": {
"max-size": "10m"
}
}
然后重启docker服务即可生效
对于指定容器设置为local驱动时,需在docker run中加–log-driver local选项即可
5)日志驱动json-file:
json-file日志路径/var/lib/docker/containers/容器id/容器id-json.log
json-file日志驱动支持的驱动选项:
max-size:切割之前日志的最大大小。取值单位k/m/g,默认为-1(表示无限制)
max-file:存在的最大日志文件数,仅在max-size设置时有效,默认为1
labels:适用于启动docker守护进程时,此守护进程接受的以逗号分隔的与日志记录相关的标签列表
env:适用于启动docker守护进程时,此守护进程接手的以逗号分隔的与日志记录相关的环境变量列表
env-regex:类似并兼容env。用于匹配与日志记录相关的环境变量的正则表达式。
compress:切割的日志是否进行压缩。默认是disabled
6)日志驱动syslog:
syslog日志驱动将日志路由到syslog服务器,syslog以原始的字符串作为日志消息元数据,接收方可以提取以下消息:
debug、warning、error、info的日志level;timestamp时间戳、hostname事件发生的主机、facility系统模块、进程名和进程id
修改/etc/docker/daemon.json文件配置全局日志驱动为syslog:
{
"log-driver": "syslog",
"log-opts": {
"syslog-address": "udp://1.2.3.4:1111"
}
}
参考文献:https://blog.51cto.com/10874766/2430921