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