概述
由于我在一台服务器上使用docker运行了多个容器,而容器也开启了错误日志与重启应用机制,这导致如果是发生重启应用无法解决问题的事故时,docker的日志会一直增大,从而占用了磁盘空间,且由于容器的本身状态是一直运行的,只是应用程序的问题,无法通过容器状态快速定位具体是哪里的问题,于是利用了docker日志大小来快速定位问题。
1. 确定docker日志储存的位置
使用下面的命令,可以查看日志储存的位置(实际上也就是容器的储存目录)
docker info
找到如下图所示信息,其中 Docker Root Dir
后跟的就是储存的目录
2. 排序
find /var/lib/docker/containers/ -name "*-json.log" -exec ls -lh {} \; | sort -k 5 -n -r
这条命令的组成部分解释如下:
- find /var/lib/docker/containers/:在/var/lib/docker/containers/目录下查找文件。
- -name “-json.log”:查找文件名匹配-json.log的文件。
- -exec ls -lh {} ;:对找到的每个文件执行ls -lh命令,ls -lh用于以易读的格式显示文件详细信息(-l表示长列表格式,-h表示以人类可读的格式显示大小)。
- sort -k 5 -n -r:对ls -lh命令的输出结果进行排序。-k 5表示按照第5列(文件大小)排序,-n表示数字排序,-r表示逆序(从大到小)。
执行后结果如下图,其中红色的这个文件可以看到文件异常的大,说明大概率是它的问题,只需要记住 1d5d8....
文件容器的id开头字母几个即可
注意: 因为我习惯将大小格式化显示,这里排序是按照数字排的,需要按单位区分大小,如果你想让最大的文件排在前面,只需要去掉 -exec ls -lh {} \;
中的 h
即可。
3. 确定容器
# 推荐方法: 输入后记住的容器id前几个字母后,按tab可以自动补全
docker ps -f id=1d5d8
# 备用方法: 也可以只输入docker ps ,然后一个个去根据id查看是哪个容器
docker ps
4. 打印容器日志,查看具体的错误日志信息
# 这里的100是指显示最近的100条错误日志 -f 是监听变化持续输出
docker logs 容器名称或容器id --tail 100 -f
根据日志信息排查解决错误即可
5. 清理旧的错误日志
- 可以直接删除在第2步中确定的日志文件
- 如果确定其他容器无误,容器日志都可以清理,你可以查看文章后面的推荐阅读内容
#推荐阅读
Docker容器日志是容器运行时产生的输出信息,包括标准输出...
文章来源:
鸿辰
版权声明:本网站可能会转载或引用其他来源的文章、图片、数据等信息。对于这些转载内容,版权归原作者所有。本站尊重原作者的劳动成果,并在可能的情况下注明来源和作者。如有任何版权问题,请及时联系,收到后将第一时间处理。