我们的docker工程在运行一段时间后,要定期的清理一下docker logs 不然系统磁盘空间会被日志占满。这里写下清理步骤:
1:docker容器的日志一般都保存在系统的var/lib/docker/containers路径下。
2:查询日志文件大小的命令:
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
3:清理文件有两种办法,方法1是直接删除文件:
rm -rf 文件名
这样方式需要重启docker容器,不重启容器的话,磁盘空间没有释放。原因是文件在删除的时候正在被容器使用,即使删除了,进程将仍然可以读取该文件,磁盘空间也一直被占用。
方法2:把日志文件中的内容清空。使用命令:
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了。