docker 限制日志文件大小和數量


最近使用docker 發現一個可怕的問題,那就是創建容器后,會把磁盤空間占滿,太可惡了。

經過查閱網站,發現這個問題是可以避免的。

可怕的路徑:/var/lib/docker/containers

原理:

docker 創建容器默認是生成一串數字,系統會為這串數字創建一個目錄。里面有*json.log 日志文件,記錄容器的日志。

如果不修改docker 日志配置文件,默認生成一個日志,這里舉例改為100M ,保留三個文件。

首先生成一個*json.log 文件,日志大小到100M 后,系統會自動把 *json.log 文件,寫入 *json.log.1里面

等到*json.log 文件 再次到 100M后,系統會自動把 *json.log 文件,寫入 *json.log.1里面,而*json.log.1 文件寫入 *json.log.2 里面。

依次類推

我這里有過測試,把其中一個 *json.log.2  文件刪除,過一會會生成  *json.log.2  文件,如果只保留 *json.log.2  文件,把 *json.log.1 日志文件刪除,系統會吧 *json.log.1 日志文件內容寫入 *json.log.2 里面。

一、修改docker 日志的配置文件

  我這里修改的,日志大小100M,保留三個文件

vi /etc/docker/daemon.json
{"registry-mirrors": ["https://registry.docker-cn.com"],
"log-driver":"json-file",
"log-opts": {"max-size":"100m", "max-file":"3"}
}

二、重啟dokcer 

systemctl restart docker

三、創建容器

我這里使用的tomcat鏡像,如果沒有鏡像可以自己拉取鏡像

docker pull tomcat

docker run --name webtomcat -d -p 8081:8080  -d centos-jdk-tomcat:v20200121

創建容器后會生成一串數字,docker 會已這個數字創建一個容器的目錄

/var/lib/docker/containers/5c0c836b5aaf2088e04d4df1ed9cc3aa770f300ca097b9a8c70416983ed31bd8

四、觀察日志大小情況

cd /var/lib/docker/containers/5c0c836b5aaf2088e04d4df1ed9cc3aa770f300ca097b9a8c70416983ed31bd8

發現日志文件已經生成兩個文件了,再等等看是否還生成一個文件。

 

 

 最后發現,又生成了一個文件

 

 

 4.1、觀察日志是否是循環寫入

我這里在*.1 日志文件最后寫  1111

我這里在*.2 日志文件最后寫  2222

 

 

 

 

 

 4.2、觀察日志文件是否有變化

需要登錄*.log 這個文件變為100M后,發現變小了,發現他的日志寫入到了 *.1里面,而*.1的日志寫入到了 *.2里面

 

 

 

 

 

 

五、這里遇到的問題

如果修改docker日志配置文件,重啟docker ,原來的容器不會生產三個文件,不生效,需要重新創建容器


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM