1. 程式人生 > 其它 >docker目錄 /var/lib/docker/containers 日誌清理

docker目錄 /var/lib/docker/containers 日誌清理

一、概述

Docker在不重建容器的情況下,日誌檔案預設會一直追加,時間一長會逐漸佔滿伺服器的硬碟的空間,記憶體消耗也會一直增加。

查出佔用磁碟較大的檔案

Docker 的日誌檔案存在 /var/lib/docker/containers 目錄中,通過下面的命令可以將日誌資料夾根據升序的方式羅列出來。

du -d1 -h /var/lib/docker/containers | sort -h

輸出如下:

50G    /var/lib/docker/containers/a5f661b85d226ed9b40702c54fcbfab44d983e4a6ad05a94f5013d17e364c5f7
46G    /var/lib/docker/containers/c00c292830ff312f8e6c3ae771b54c30bf8ac92fab2e44c0e60c6b3eed84cf98
36G    
/var/lib/docker/containers/ff8395dbb6d5e52e136a2f55d93cf7f41db05b18c37b92f3aa24807ea3d46644 ...

二、清理日誌

由於日誌檔案比較多,一個個清理比較麻煩,這裡直接使用指令碼清理

clean_docker_logs.sh

內容如下:

#!/bin/bash
echo "==================== start clean docker containers logs =========================="

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs do echo "clean logs : $log" cat /dev/null > $log done echo "==================== end clean docker containers logs =========================="

執行指令碼,就可以一鍵清理。

再次檢視,發現已經清理好了。

# du -sh /var/lib/docker/containers
148K    /var/lib/docker/containers

三、控制容器日誌大小

以上只是臨時解決的方式,不適合長期執行。

全域性配置

建立或修改檔案 /etc/docker/daemon.json,並增加以下配置

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

max-size=50m,意味著一個容器日誌大小上限是50M,
max-file=3,意味著一個容器有三個日誌,分別是id+.json、id+1.json、id+2.json。可以存在的最大日誌檔案數。如果超過最大值,則會刪除最舊的檔案。**僅在max-size設定時有效。預設為5。

隨後重啟 Docker 服務

sudo systemctl daemon-reload
sudo systemctl restart docker

注意:設定的日誌大小,只對新建的容器有效。已存在的容器不會生效,需要重建才可以。

本文參考連結:
https://www.cnblogs.com/zhangmingcheng/p/13960496.html

https://blog.csdn.net/weixin_41476014/article/details/103568756