Docker容器在運行過程中會產(chǎn)生很多日志冒冬,久而久之伸蚯,磁盤空間就被占滿了,以下分享docker容器日志清理的幾種方法
刪除日志
在linux上简烤,容器日志一般存放在 /var/lib/docker/containers/container_id/
下剂邮, 以json.log
結(jié)尾,找到這些文件横侦,刪除即可挥萌,需要注意的是如果容器處在運行狀態(tài),使用 rm -rf
方式刪除日志后枉侧,通過 df -h
會發(fā)現(xiàn)磁盤空間并沒有釋放引瀑,原因是在Linux或者Unix系統(tǒng)中,通過 rm -rf
或者文件管理器刪除文件棵逊,將會從文件系統(tǒng)的目錄結(jié)構(gòu)上解除鏈接(unlink)伤疙;如果文件此時是被打開的(有一個進程正在使用),那么進程將仍然可以讀取該文件辆影,磁盤空間也一直被占用徒像;所以通過rm -rf
刪除日志時需要重啟docker,以釋放資源蛙讥,這樣非常不方便锯蛀。
所以清理docker日志的正確方法是
cat /dev/null > *-json.log
從根本上解決Docker容器日志空間占用問題
通過以上兩種方式清理之后,隨著時間的推移次慢,容器日志又會逐漸增大旁涤,可謂指標(biāo)不治本,要從根本上解決問題迫像,需要限制容器服務(wù)的日志大小上限劈愚;這個通過修改docker的配置文件來實現(xiàn)
在docker的配置文件/etc/docker/daemon.json
(默認路徑)中添加以下內(nèi)容即可
"log-opts": {
"max-size": "500m",
"max-file": "3"
}
- max-size=500m,意味著一個容器日志大小上限是500M
- max-file=3闻妓,意味著一個容器有三個日志厅翔,分別是id+.json谣妻、id+1.json、id+2.json
重啟docker進程
systemctl daemon-reload
systemctl restart docker
需要注意的是在這里設(shè)置的日志大小,只對新建的容器有效卒蘸。