搭配遠端日誌記錄驅動程式使用 docker logs
概覽
您可以使用 docker logs
指令來讀取容器記錄,無論設定的記錄驅動程式或插件為何。Docker 引擎使用 local
記錄驅動程式作為快取,以讀取容器的最新記錄。這稱為雙重記錄。預設情況下,快取已啟用記錄檔輪替,並且每個容器最多限制為 5 個檔案,每個檔案 20 MB(壓縮前)。
請參閱設定選項章節來自訂這些預設值,或參閱停用雙重記錄章節來停用此功能。
先決條件
如果設定的記錄驅動程式不支援讀取記錄,Docker 引擎會自動啟用雙重記錄。
以下範例顯示在具有和不具有雙重記錄可用性的情況下執行 docker logs
指令的結果
無雙重記錄功能
當容器設定了遠端記錄驅動程式(例如 splunk
)且雙重記錄已停用時,嘗試在本地讀取容器記錄時會顯示錯誤
步驟 1:設定 Docker 守護程式
$ cat /etc/docker/daemon.json { "log-driver": "splunk", "log-opts": { "cache-disabled": "true", ... (options for "splunk" logging driver) } }
步驟 2:啟動容器
$ docker run -d busybox --name testlog top
步驟 3:讀取容器記錄
$ docker logs 7d6ac83a89a0 Error response from daemon: configured logging driver does not support reading
具備雙重記錄功能
啟用雙重記錄快取後,即使記錄驅動程式不支援讀取記錄,也可以使用 docker logs
指令來讀取記錄。以下範例顯示了一個守護程式設定,該設定使用 splunk
遠端記錄驅動程式作為預設值,並啟用了雙重記錄快取
步驟 1:設定 Docker 守護程式
$ cat /etc/docker/daemon.json { "log-driver": "splunk", "log-opts": { ... (options for "splunk" logging driver) } }
步驟 2:啟動容器
$ docker run -d busybox --name testlog top
步驟 3:讀取容器記錄
$ docker logs 7d6ac83a89a0 2019-02-04T19:48:15.423Z [INFO] core: marked as sealed 2019-02-04T19:48:15.423Z [INFO] core: pre-seal teardown starting 2019-02-04T19:48:15.423Z [INFO] core: stopping cluster listeners 2019-02-04T19:48:15.423Z [INFO] core: shutting down forwarding rpc listeners 2019-02-04T19:48:15.423Z [INFO] core: forwarding rpc listeners stopped 2019-02-04T19:48:15.599Z [INFO] core: rpc listeners successfully shut down 2019-02-04T19:48:15.599Z [INFO] core: cluster listeners successfully shut down
注意
對於支援讀取記錄的記錄驅動程式,例如
local
、json-file
和journald
驅動程式,在雙重記錄功能可用之前或之後,功能沒有差異。對於這些驅動程式,在兩種情況下都可以使用docker logs
讀取記錄。
設定選項
雙重記錄快取接受與 local
記錄驅動程式 相同的設定選項,但帶有 cache-
前綴。可以針對每個容器指定這些選項,並且可以使用 守護程式設定檔 設定新容器的預設值。
預設情況下,快取已啟用記錄檔輪替,並且每個容器最多限制為 5 個檔案,每個檔案 20MB(壓縮前)。使用下面描述的設定選項來自訂這些預設值。
選項 | 預設值 | 說明 |
---|---|---|
cache-disabled | "false" | 停用本地快取。以字串形式傳遞的布林值(true 、1 、0 或 false )。 |
cache-max-size | "20m" | 快取輪替前的最大大小。一個正整數加上表示度量單位的修飾符(k 、m 或 g )。 |
cache-max-file | "5" | 可以存在的快取檔案的最大數量。如果輪替記錄建立了多餘的檔案,則會移除最舊的檔案。一個正整數。 |
cache-compress | "true" | 啟用或停用輪替記錄檔的壓縮。以字串形式傳遞的布林值(true 、1 、0 或 false )。 |
停用雙重記錄快取
使用 cache-disabled
選項來停用雙重記錄快取。在僅透過遠端記錄系統讀取記錄,並且無需透過 docker logs
讀取記錄進行除錯的情況下,停用快取有助於節省儲存空間。
使用 守護程式設定檔 時,可以針對個別容器或預設為新容器停用快取。
以下範例使用守護程式設定檔,將 splunk
記錄驅動程式作為預設值,並停用快取
$ cat /etc/docker/daemon.json
{
"log-driver": "splunk",
"log-opts": {
"cache-disabled": "true",
... (options for "splunk" logging driver)
}
}
注意
對於支援讀取記錄的記錄驅動程式,例如
local
、json-file
和journald
驅動程式,不會使用雙重記錄,並且停用該選項沒有任何作用。
限制
- 如果使用將記錄遠端傳送的記錄驅動程式或插件的容器出現網路問題,則不會對本地快取執行
write
操作。 - 如果由於任何原因(檔案系統已滿,寫入權限已移除)導致對
logdriver
的寫入失敗,則快取寫入將失敗,並記錄在守護程式記錄中。不會重試對快取的記錄項目。 - 在預設設定中,快取中可能會遺失一些記錄,因為使用了環形緩衝區來防止在檔案寫入速度緩慢的情況下阻塞容器的 stdio。管理員必須在守護程式關閉時修復這些問題。