我們的docker工程在運(yùn)行一段時(shí)間后,要定期的清理一下docker logs 不然系統(tǒng)磁盤空間會(huì)被日志占滿怀酷。這里寫下清理步驟:
1:docker容器的日志一般都保存在系統(tǒng)的var/lib/docker/containers路徑下觉阅。
2:查詢?nèi)罩疚募笮〉拿睿?/p>
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
3:清理文件有兩種辦法崖疤,方法1是直接刪除文件:
rm -rf 文件名
這樣方式需要重啟docker容器秘车,不重啟容器的話,磁盤空間沒有釋放劫哼。原因是文件在刪除的時(shí)候正在被容器使用叮趴,即使刪除了,進(jìn)程將仍然可以讀取該文件权烧,磁盤空間也一直被占用眯亦。
方法2:把日志文件中的內(nèi)容清空。使用命令:
truncate -s 0 /var/lib/docker/containers/3ee1a49546e369049836c07f6c92b9e4af4b6ef8ff13393ed5a2b5c2bf528372/3ee1a49546e369049836c07f6c92b9e4af4b6ef8ff13393ed5a2b5c2bf528372-json.log
其中3ee1a49546e3是容器ID
寫成shell腳本定期清理:
#!/bin/sh
echo "==================== start clean docker containers logs =========================="
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
? ? ? ? do
? ? ? ? ? ? ? ? echo "clean logs : $log"
? ? ? ? ? ? ? ? truncate -s 0 $log
? ? ? ? done
echo "==================== end clean docker containers logs? =========================="
我們還可以限制生成日志的大小在/etc/docker/daemon.json文件夾中添加:
"log-driver":"json-file",
?"log-opts":{ "max-size" :"50m","max-file":"1"}
然后重啟:
systemctl daemon-reload
systemctl restart docker
這樣所有容器的日志大小就被限制到50M了般码。