設定 Docker 紀錄檔大小和自動刪除舊紀錄檔:通過設定 Docker 使用 json-file 紀錄檔驅動,同時使用 logrotate 工具,可以設定紀錄檔的最大大小(例如100MB),並在達到該大小時自動刪除舊紀錄檔。這可幫助管理 Docker 紀錄檔檔案大小和保持儲存空間整潔。
在 Docker 的組態檔中,通常是 /etc/docker/daemon.json,可以指定使用 json-file 紀錄檔驅動並設定紀錄檔的最大大小。編輯組態檔並新增以下內容:
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "10"
}
}
儲存組態檔並重新啟動 Docker 服務以應用更改:
sudo systemctl daemon-reload && systemctl restart docker
現在,需要安裝和設定 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 紀錄檔將根據設定定期輪轉,並在達到指定的最大大小時刪除舊紀錄檔。
開啟 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 的命令。
儲存組態檔。
如果使用的是 systemd,可以使用以下命令重啟 Cron 服務:
sudo systemctl restart cron
如果使用的是 SysV init 系統,可以使用以下命令:
sudo service cron restart
可以使用以下命令列出當前設定的 Cron 作業:
crontab -l
這將顯示所有使用者的 Cron 作業,包括新新增的 logrotate 作業。
現在,logrotate 將根據在 Cron 作業中設定的時間表定期執行,執行紀錄檔輪轉操作,以確保紀錄檔檔案的定期清理和管理。
本文來自部落格園,作者:xiao智,轉載請註明原文連結:https://www.cnblogs.com/yuwen01/p/17756977.html