一、概述
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