JSON 檔案記錄驅動程式

預設情況下,Docker 會擷取所有容器的標準輸出(和標準錯誤),並使用 JSON 格式將它們寫入檔案中。JSON 格式會使用其來源(`stdout` 或 `stderr`)及其時間戳記來註釋每一行。每個記錄檔僅包含關於一個容器的資訊。

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

**警告**

`json-file` 記錄驅動程式使用基於檔案的儲存空間。這些檔案設計為 Docker 常駐程式專用。使用外部工具與這些檔案互動可能會干擾 Docker 的記錄系統並導致非預期的行為,因此應避免這種情況。

用法

若要使用 `json-file` 驅動程式作為預設記錄驅動程式,請在 `daemon.json` 檔案中將 `log-driver` 和 `log-opts` 鍵設定為適當的值,該檔案位於 Linux 主機上的 `/etc/docker/` 或 Windows Server 上的 `C:\ProgramData\docker\config\`。如果檔案不存在,請先建立它。有關使用 `daemon.json` 設定 Docker 的詳細資訊,請參閱 [daemon.json](https://docker-docs.dev.org.tw/reference/cli/dockerd/#daemon-configuration-file)。

以下範例將記錄驅動程式設定為 `json-file`,並將 `max-size` 和 `max-file` 選項設定為啟用自動記錄輪替。

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

**注意**

必須以字串形式提供 `daemon.json` 設定檔中的 `log-opts` 設定選項。因此,必須將布林值和數值(例如,上例中 `max-file` 的值)括在引號 (`"`) 中。

重新啟動 Docker,讓變更對新建立的容器生效。現有容器不會自動使用新的記錄設定。

您可以使用 `--log-driver` 旗標搭配 `docker container create` 或 `docker run` 來設定特定容器的記錄驅動程式

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

選項

`json-file` 記錄驅動程式支援下列記錄選項

選項說明範例值
max-size記錄輪替前的最大大小。一個正整數加上表示測量單位的修飾符(`k`、`m` 或 `g`)。預設值為 -1(無限制)。--log-opt max-size=10m
max-file可以存在的記錄檔最大數量。如果輪替記錄建立了過多的檔案,則會移除最舊的檔案。**僅在也設定 `max-size` 時有效。** 一個正整數。預設值為 1。--log-opt max-file=3
標籤適用於啟動 Docker 常駐程式時。此常駐程式接受的以逗號分隔的記錄相關標籤清單。用於進階的[記錄標籤選項](https://docker-docs.dev.org.tw/engine/logging/log_tags/)。--log-opt labels=production_status,geo
labels-regex類似於且相容於 `labels`。用於比對記錄相關標籤的正則表達式。用於進階的[記錄標籤選項](https://docker-docs.dev.org.tw/engine/logging/log_tags/)。--log-opt labels-regex=^(production_status|geo)
環境適用於啟動 Docker Daemon 時。Daemon 接受以逗號分隔的日誌相關環境變數清單。用於進階的日誌標籤選項--log-opt env=os,customer
env-regex類似於且相容於 env。用於匹配日誌相關環境變數的正規表達式。用於進階的日誌標籤選項--log-opt env-regex=^(os|customer)
compress切換已輪替日誌的壓縮功能。預設為 disabled(停用)。--log-opt compress=true

範例

此範例啟動一個 alpine 容器,該容器最多可以有 3 個日誌檔,每個檔案大小不超過 10 MB。

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