灵活运用docker日志文件大小快速排查异常容器

鸿辰 Dcoker 279 0

概述

由于我在一台服务器上使用docker运行了多个容器,而容器也开启了错误日志与重启应用机制,这导致如果是发生重启应用无法解决问题的事故时,docker的日志会一直增大,从而占用了磁盘空间,且由于容器的本身状态是一直运行的,只是应用程序的问题,无法通过容器状态快速定位具体是哪里的问题,于是利用了docker日志大小来快速定位问题。

1. 确定docker日志储存的位置

使用下面的命令,可以查看日志储存的位置(实际上也就是容器的储存目录)

docker info

找到如下图所示信息,其中 Docker Root Dir 后跟的就是储存的目录

灵活运用docker日志文件大小快速排查异常容器-第1张图片-鸿辰个人分享站

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开头字母几个即可

灵活运用docker日志文件大小快速排查异常容器-第2张图片-鸿辰个人分享站

注意: 因为我习惯将大小格式化显示,这里排序是按照数字排的,需要按单位区分大小,如果你想让最大的文件排在前面,只需要去掉 -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 linux