Docker容器日志的種類以及存儲
Docker容器日志的種類以及存儲
作者: Yisany
原文: https://www.cnblogs.com/yisany/p/13725504.html
Docker 日志#
?stdout標準輸出日志
stdout就是標準輸出里面的日志, 比如程序運行時輸出在控制臺的內(nèi)容就會寫入標準輸出
原理就是當在啟動進程的時候,進程之間有一個父子關(guān)系,父進程可以拿到子進程的標準輸出?文件日志
直接寫入磁盤的日志, 例如java使用log4j框架直接將日志落盤(不在控制臺輸出)就是典型的文件日志
1. 查看日志
docker logs [containerID] 命令查看容器的日志。$ docker logs [OPTIONS] CONTAINEROptions:--details 顯示更多的信息-f, --follow 跟蹤實時日志--since string 顯示自某個timestamp之后的日志,或相對時間,如42m(即42分鐘)--tail string 從日志末尾顯示多少行日志, 默認是all-t, --timestamps 顯示時間戳--until string 顯示自某個timestamp之前的日志,或相對時間,如42m(即42分鐘)
例子:
?查看指定時間后的日志,只顯示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID?查看最近30分鐘的日志:
$ docker logs --since 30m CONTAINER_ID?查看某時間之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID?查看某時間段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID2. 日志在哪?
/var/lib/docker 文件夾下, 具體的信息可以通過 docker inspect 命令查看:$ docker inspect [OPTIONS] CONTAINER例如:
$ docker inspect -f {{".LogPath"}} 2be輸出:
/data/docker/containers/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad/2be9b6dc81a557d11d84bc33bf1062462da9b62e59cc9faef9251bdcff26f3ad-json.log這就是這個容器的日志記錄文件了
日志文件相關(guān)信息
json-file 模式:| 選項 | 描述 | 示例值 |
max-size | 日志文件的最大大小, 默認為-1(無限制) | --log-opt max-size=10m |
max-file | 可以存在的最大日志文件數(shù)。如果滾動日志會創(chuàng)建多余的文件,則會刪除最早的文件。僅在max-size設(shè)置時有效。一個正整數(shù)。默認為1。 | --log-opt max-file=3 |
labels | 在啟動Docker守護程序時適用。該守護程序接受的與日志記錄相關(guān)的標簽的逗號分隔列表。用于高級日志標簽選項。 | --log-opt labels=production_status,geo |
env | 在啟動Docker守護程序時適用。該守護程序接受的與日志相關(guān)的環(huán)境變量的逗號分隔列表。用于高級日志標簽選項。 | --log-opt env=os,customer |
env-regex | 與相似并兼容env。用于匹配與日志記錄相關(guān)的環(huán)境變量的正則表達式。用于高級日志標簽選項。 | --log-opt env-regex=^(os|customer). |
compress | 切換旋轉(zhuǎn)日志的壓縮。默認值為disabled。 | --log-opt compress=true |
3. 配置LogDriver
json-file模式:| Driver | Description |
none | 丟棄容器輸出 |
local | 日志以自定義格式存儲 |
json-file | 日志存儲格式為json, 默認的logdriver驅(qū)動 |
syslog | 日志寫入到指定的syslog地址 |
journald | 日志寫入到指定jounald |
gelf | 以gelf格式發(fā)送日志 |
fluentd | 日志發(fā)送到指定的fluentd服務 |
awslogs | 日志發(fā)送到指定的Amazon CloudWatch Logs |
splunk | 日志發(fā)送到指定的splunk服務 |
etwlogs | 日志發(fā)送到Event Tracing for Windows, 僅支持windows平臺 |
gcplogs | 日志發(fā)送到Google Cloud日志系統(tǒng) |
logentries | 日志發(fā)送到Rapid7 Logentries |
?修改Docker Daemon, 這樣會對所有容器生效, 以syslog為例:
dockerd --log-driver=syslog --log-opt syslog-address=127.0.0.1:514?在容器啟動時加上配置項, 這樣配置只會對當前容器生效:
docker run --log-driver=syslog --log-opt syslog-address=127.0.0.1:514 nginx:lasterdocker plugin install進行安裝, 詳情可見: https://docs.docker.com/config/containers/logging/plugins/歡迎關(guān)注我的公眾號“須彌零一”,更多技術(shù)文章第一時間推送。
評論
圖片
表情
