?
This document uses PHP Chinese website manual Release
Docker 包含多種日志記錄機(jī)制來幫助您從運(yùn)行容器和服務(wù)中獲取信息。這些機(jī)制被稱為日志驅(qū)動(dòng)程序。
每個(gè) Docker 守護(hù)進(jìn)程(daemon)都有一個(gè)默認(rèn)日志記錄驅(qū)動(dòng)程序,每個(gè)容器使用該驅(qū)動(dòng)程序,除非您將其配置為使用其他日志記錄驅(qū)動(dòng)程序
除了使用 Docker 附帶的日志驅(qū)動(dòng)程序之外,您還可以實(shí)現(xiàn)和使用日志驅(qū)動(dòng)程序插件。記錄驅(qū)動(dòng)程序插件在 Docker 17.05和更高版本中可用。
要將 Docker 守護(hù)程序(daemon)配置為默認(rèn)為特定的日志記錄驅(qū)動(dòng)程序,請(qǐng)將log-driver
值設(shè)置為位于 Linux 主機(jī)/etc/docker/
或 Windows 服務(wù)器主機(jī)上C:\ProgramData\docker\config\
的daemon.json
文件中的日志記錄驅(qū)動(dòng)程序的名稱。默認(rèn)日志記錄驅(qū)動(dòng)程序是json-file
。以下示例顯式地將默認(rèn)日志記錄驅(qū)動(dòng)程序設(shè)置為syslog
:
{ "log-driver": "syslog"}
如果日志記錄驅(qū)動(dòng)程序具有可配置選項(xiàng),則可以使用log-opts
鍵將它們作為 JSON 數(shù)組設(shè)置在daemon.json
文件中。以下示例在json-file
日志記錄驅(qū)動(dòng)程序上設(shè)置兩個(gè)可配置選項(xiàng):
{ "log-driver": "json-file", "log-opts": { "labels": "production_status", "env": "os,customer" }}
如果您不指定日志記錄驅(qū)動(dòng)程序,則默認(rèn)為json-file
。因此,JSON之類的命令的默認(rèn)輸出,諸如docker inspect <CONTAINER>
。
要查找 Docker 守護(hù)程序(daemon)的當(dāng)前默認(rèn)日志記錄驅(qū)動(dòng)程序,請(qǐng)運(yùn)行docker info
并且搜索Logging Driver
。您可以在 Linux,macOS 或在 Windows 上的 PowerShell 上使用以下命令:
$ docker info |grep 'Logging Driver'Logging Driver: json-file
在啟動(dòng)容器時(shí),可以使用--log-driver
標(biāo)志將其配置為使用與 Docker 守護(hù)程序(daemon)默認(rèn)值不同的日志記錄驅(qū)動(dòng)程序。如果日志記錄驅(qū)動(dòng)程序具有可配置選項(xiàng),則可以使用--log-opt <NAME>=<VALUE>
標(biāo)志的一個(gè)或多個(gè)實(shí)例來設(shè)置它們。即使容器使用默認(rèn)的日志記錄驅(qū)動(dòng)程序,它也可以使用不同的可配置選項(xiàng)。
以下示例帶有none
日志驅(qū)動(dòng)程序啟動(dòng) Alpine 容器。
$ docker run -it --log-driver none alpine ash
要查找正在運(yùn)行的容器的當(dāng)前日志記錄驅(qū)動(dòng)程序,如果守護(hù)程序正在使用json-file
日志記錄驅(qū)動(dòng)程序,請(qǐng)運(yùn)行以下docker inspect
命令,將容器名稱或 ID 替換為<CONTAINER>
:
$ docker inspect -f '{{.HostConfig.LogConfig.Type}}' <CONTAINER>json-file
一些日志記錄驅(qū)動(dòng)程序?qū)⒁粋€(gè)容器的--env|-e
或--label
多個(gè)標(biāo)志的值添加到容器的日志中。本示例使用 Docker 守護(hù)程序(daemon)的默認(rèn)日志記錄驅(qū)動(dòng)程序啟動(dòng)容器(讓我們假設(shè)json-file
),但設(shè)置環(huán)境變量os=ubuntu
。
$ docker run -dit --label production_status=testing -e os=ubuntu alpine sh
如果日志記錄驅(qū)動(dòng)程序支持它,則會(huì)向日志輸出添加其他字段。以下輸出由json-file
日志驅(qū)動(dòng)程序生成:
"attrs":{"production_status":"testing","os":"ubuntu"}
支持以下日志記錄驅(qū)動(dòng)程序。如果適用,請(qǐng)參閱每個(gè)驅(qū)動(dòng)程序文檔的鏈接以了解其可配置選項(xiàng)。如果您使用的是日志驅(qū)動(dòng)程序插件,則可能會(huì)看到更多選項(xiàng)。
驅(qū)動(dòng) | 描述 | |
---|---|---|
none | 沒有日志將可用于容器和碼頭日志不會(huì)返回任何輸出。 | |
json-file | 日志格式為JSON。Docker的默認(rèn)日志記錄驅(qū)動(dòng)程序。 | |
syslog | 將日志消息寫入syslog工具。系統(tǒng)日志守護(hù)程序必須在主機(jī)上運(yùn)行。 | |
journald | 將日志消息寫入日記帳。journald守護(hù)程序必須在主機(jī)上運(yùn)行。 | |
gelf | 將日志消息寫入Graylog擴(kuò)展日志格式(GELF)端點(diǎn),如Graylog或Logstash。 | |
fluentd | 將日志消息寫入fluentd(正向輸入)。fluentd守護(hù)進(jìn)程必須在主機(jī)上運(yùn)行。 | |
awslogs | 將日志消息寫入Amazon CloudWatch Logs。 | |
splunk | 使用HTTP事件收集器將日志消息寫入splunk。 | |
etwlogs | 將日志消息寫為Windows事件跟蹤(ETW)事件。僅在Windows平臺(tái)上可用。 | |
gcplogs | 將日志消息寫入Google Cloud Platform(GCP)日志記錄。 |
docker logs
命令不適用于除json-file
和journald
之外的其他驅(qū)動(dòng)程序。