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