Docker在不重建容器的情況下,日志文件默認(rèn)會(huì)一直追加,時(shí)間一長(zhǎng)會(huì)逐漸占滿服務(wù)器的硬盤(pán)的空間,內(nèi)存消耗也會(huì)一直增加。
查出占用磁盤(pán)較大的文件
Docker 的日志文件存在 /var/lib/docker/containers 目錄中,通過(guò)下面的命令可以將日志文件夾根據(jù)升序的方式羅列出來(lái)。
sudo du -d1 -h /var/lib/docker/containers | sort -h
40K /var/lib/docker/containers/7bbec35275e8f63784107d486c9c40cb62902afd6815c569b36947f0b0ed6405
40K /var/lib/docker/containers/7df78d67728173c13b4a238518b79d4b4a384d38026102a61aef290e53f2f1a6
32G /var/lib/docker/containers/c28a096b0594349c7b6cbf9d9931e652ac9f72a0d2c033a2fcb022c154aaf4e6
32G /var/lib/docker/containers
清理單個(gè)文件
感覺(jué)哪個(gè)容器的日志太大就清理哪個(gè)
sudo sh -c "cat /dev/null > ${log_file}"
${log_file} 就是日志文件
可以通過(guò)find命令查找全部日志
sudo find /var/lib/docker/containers -name *.log
控制容器日志大小
以上只是臨時(shí)解決的方式,最好是創(chuàng)建容器時(shí)就控制日志的大小。
運(yùn)行時(shí)控制
啟動(dòng)容器時(shí),我們可以通過(guò)參數(shù)來(lái)控制日志的文件個(gè)數(shù)和單個(gè)文件的大小
# max-size 最大數(shù)值``# max-file 最大日志數(shù)``$ docker run -it --log-opt max-size=10m --log-opt max-file=3 redis
一兩個(gè)容器還好,但是如果有很多容器需要管理,這樣就很不方便了,最好還是可以統(tǒng)一管理。
全局配置
創(chuàng)建或修改文件 /etc/docker/daemon.json,并增加以下配置
{
"log-driver":"json-file",
"log-opts":{
"max-size" :"50m","max-file":"3"
}
}
max-size=50m,意味著一個(gè)容器日志大小上限是50M,
max-file=3,意味著一個(gè)容器有三個(gè)日志,分別是id+.json、id+1.json、id+2.json。可以存在的最大日志文件數(shù)。如果超過(guò)最大值,則會(huì)刪除最舊的文件。**僅在max-size設(shè)置時(shí)有效。默認(rèn)為5。
隨后重啟 Docker 服務(wù)
sudo systemctl daemon-reload``sudo systemctl restart docker
不過(guò)已存在的容器不會(huì)生效,需要重建才可以
刪除最大日志文件后 磁盤(pán)空間沒(méi)有釋放。顯示磁盤(pán)空間還是很小
通過(guò)停止容器 重新啟動(dòng)容器命令 來(lái)釋放磁盤(pán)空間
#停止容器
docker stop 200cfb7a8db4
#啟動(dòng)容器
docker start 200cfb7a8db4