Docker 日誌自動輪轉和清理配置

xiao智發表於2023-10-11

設定 Docker 日誌大小和自動刪除舊日誌:透過配置 Docker 使用 json-file 日誌驅動,同時使用 logrotate 工具,可以設定日誌的最大大小(例如100MB),並在達到該大小時自動刪除舊日誌。這可幫助管理 Docker 日誌檔案大小和保持儲存空間整潔。


步驟 1:配置 Docker 日誌驅動

在 Docker 的配置檔案中,通常是 /etc/docker/daemon.json,可以指定使用 json-file 日誌驅動並設定日誌的最大大小。編輯配置檔案並新增以下內容:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "10"
  }
}
  • max-size:指定日誌檔案的最大大小,這裡設定為 100MB。
  • max-file:指定保留的舊日誌檔案數,這裡設定為 10。

儲存配置檔案並重新啟動 Docker 服務以應用更改:

sudo systemctl daemon-reload && systemctl restart  docker

步驟 2:安裝和配置 logrotate

現在,需要安裝和配置 logrotate 工具,以定期輪轉 Docker 日誌檔案。在大多數 Linux 發行版中,logrotate 工具已經安裝。可以使用以下命令來編輯 logrotate 配置檔案:

sudo nano /etc/logrotate.conf

在配置檔案中,可以新增一個新的日誌輪轉配置,以定期清理 Docker 日誌檔案:

/var/lib/docker/containers/*/*.log {
    missingok
    weekly
    rotate 10
    size 100M
    compress
    delaycompress
    notifempty
    copytruncate
}
  • /var/lib/docker/containers/*/*.log:這是 Docker 日誌檔案的預設儲存位置。確保路徑與的系統中的實際路徑匹配。
  • weekly:日誌輪轉週期,這裡設定為每週。
  • rotate 10:保留的舊日誌檔案數,與 Docker 日誌驅動配置的 max-file 一致。
  • size 100M:日誌檔案大小達到 100MB 時觸發輪轉。
  • compress:啟用壓縮舊日誌。
  • delaycompress:在壓縮之前保留一個未壓縮的副本。
  • notifempty:僅在日誌檔案非空時輪轉。
  • copytruncate:使用 copytruncate 選項避免中斷正在寫入的日誌檔案。

儲存配置檔案並測試 logrotate:

sudo logrotate -d /etc/logrotate.conf

這將模擬日誌輪轉並顯示輪轉操作的詳細資訊。如果一切正常,可以將其設定為定期自動執行:

sudo logrotate -f /etc/logrotate.conf

現在,Docker 日誌將根據配置定期輪轉,並在達到指定的最大大小時刪除舊日誌。

步驟 3:編輯 Cron 作業

開啟 cron 配置檔案以編輯 Cron 作業。通常,Cron 作業的配置檔案位於 /etc/crontab 或 /etc/cron.d 目錄中。
新增一個新的 Cron 作業,以定期執行 logrotate 。以下是一個示例 Cron 作業:

0 0 * * * root /usr/sbin/logrotate -f /etc/logrotate.conf

這個 Cron 作業的含義是在每天午夜(00:00)執行 logrotate。可以根據需要調整時間表。/usr/sbin/logrotate -f /etc/logrotate.conf 是執行 logrotate 的命令。

儲存配置檔案。

步驟 4:重啟 Cron 服務

如果使用的是 systemd,可以使用以下命令重啟 Cron 服務:

sudo systemctl restart cron

如果使用的是 SysV init 系統,可以使用以下命令:

sudo service cron restart

步驟 5:驗證 Cron 作業

可以使用以下命令列出當前配置的 Cron 作業:

crontab -l

這將顯示所有使用者的 Cron 作業,包括新新增的 logrotate 作業。

現在,logrotate 將根據在 Cron 作業中設定的時間表定期執行,執行日誌輪轉操作,以確保日誌檔案的定期清理和管理。

相關文章