JSON 檔案日誌驅動程式

預設情況下,Docker 會捕獲所有容器的標準輸出(和標準錯誤),並使用 JSON 格式將它們寫入檔案。JSON 格式使用其來源(stdoutstderr)及其時間戳註釋每行。每個日誌檔案僅包含有關一個容器的資訊。

{
  "log": "Log line is here\n",
  "stream": "stdout",
  "time": "2019-01-01T11:11:11.111111111Z"
}

警告

json-file 日誌驅動使用基於檔案儲存。這些檔案旨在供 Docker 守護程式獨佔訪問。使用外部工具與這些檔案互動可能會干擾 Docker 的日誌系統並導致意外行為,應避免。

用法

要使用 json-file 驅動作為預設日誌驅動,請在 daemon.json 檔案中將 log-driverlog-opts 金鑰設定為適當的值,該檔案位於 Linux 主機上的 /etc/docker/ 或 Windows Server 上的 C:\ProgramData\docker\config\ 中。如果檔案不存在,請先建立它。有關使用 daemon.json 配置 Docker 的更多資訊,請參閱 daemon.json.

以下示例將日誌驅動設定為 json-file 並設定 max-sizemax-file 選項以啟用自動日誌輪換。

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

注意

daemon.json 配置檔案中的 log-opts 配置選項必須以字串形式提供。因此,布林值和數值(例如上面的示例中的 max-file 值)必須用引號(")括起來。

重新啟動 Docker 以使更改對新建立的容器生效。現有容器不會自動使用新的日誌記錄配置。

您可以使用 --log-driver 標誌為特定容器設定日誌記錄驅動,方法是將 --log-driver 標誌新增到 docker container createdocker run

$ docker run \
      --log-driver json-file --log-opt max-size=10m \
      alpine echo hello world

選項

json-file 日誌驅動支援以下日誌記錄選項

選項描述示例值
max-size日誌在滾動之前允許的最大大小。一個正整數加上表示度量單位的修飾符 (kmg)。預設為 -1(無限制)。--log-opt max-size=10m
max-file可以存在的日誌檔案最大數量。如果滾動日誌建立了多餘的檔案,則將刪除最舊的檔案。**僅在也設定了 max-size 時有效。**一個正整數。預設為 1。--log-opt max-file=3
labels在啟動 Docker 守護程式時應用。此守護程式接受的與日誌記錄相關的標籤的逗號分隔列表。用於高階 日誌標籤選項--log-opt labels=production_status,geo
labels-regex類似於併兼容 labels。用於匹配與日誌記錄相關的標籤的正則表示式。用於高階 日誌標籤選項--log-opt labels-regex=^(production_status|geo)
env在啟動 Docker 守護程式時應用。此守護程式接受的與日誌記錄相關的環境變數的逗號分隔列表。用於高階 日誌標籤選項--log-opt env=os,customer
env-regex類似於併兼容 env。用於匹配與日誌記錄相關的環境變數的正則表示式。用於高階 日誌標籤選項--log-opt env-regex=^(os|customer)
compress切換輪換日誌的壓縮。預設為 disabled--log-opt compress=true

示例

此示例啟動一個 alpine 容器,該容器最多可以有 3 個日誌檔案,每個檔案不超過 10 兆位元組。

$ docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash