Docker容器日志查看与清理
1、Docker容器日志查看
Docker容器日志查看我们都知道用:docker logs -f 容器名/容器ID
在实际使用中我们往往会忽略容器日志存储的问题,直到某天服务器磁盘告警才去排查问题,非常影响生产效率,下面我们就讲下如何时查看容器日志位置,及清除方法。
2、Docker容器日志位置查找
Linux下默认容器日志位置在:/var/lib/docker/containers/目录中对应的容器ID目录下, 以json.log结尾的文件,查看所有容器日志位置及大小的脚本如下:
#!/bin/bash echo "======== docker containers logs file list ========" logs=$(find /var/lib/docker/containers/ -name *-json.log) for log in $logs do ls -lh $log done
注:如果对Docker工作目录有调整,请根据实际情况修改脚本中的find命令后的查找目录位置。下面的清除脚本也如此。
3、Docker容器日志清除及优化
清空Docker容器日志脚本:
#!/bin/bash echo "======== start clean docker containers logs ========" logs=$(find /var/lib/docker/containers/ -name *-json.log) for log in $logs do echo "clean logs : $log" echo "" > $log done
这样脚本执行一次会释放所有日志存储空间,但时间长了后日志依然会增长起来。你会说我们可以用定时任务crontab -e,将脚本加入的系统定时任务中由系统定时帮我们清理容器日志。这种方案虽然看起来很完美,但有点暴力,
而且如果需要查看定时任务执行时间点前的日志时就会很尴尬了。我们可以采取下面的方案——设置容器日志大小的方式来限制日志大小,这样会优雅了许多。脚本实现方法如下:
cat <<-ENDDOCKER > /etc/docker/daemon.json { "log-opts": { "max-size": "20m", "max-file": "10" } } ENDDOCKER systemctl daemon-reload systemctl restart docker
关于日志文件大小及个数(max-size、max-file),你可以根据实际需要来调整。
如果你已使用了/etc/docker/daemon.json对Docker做过特殊配置,只需要把下面的内容添加到/etc/docker/daemon.json文件中,然后重启Docker服务即可。
"log-opts": { "max-size": "20m", "max-file": "10" }
更多精彩