docker容器日志管理


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM