共计 1104 个字符,预计需要花费 3 分钟才能阅读完成。
概述
由于我在一台服务器上使用 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 容器日志是容器运行时产生的输出信息,包括标准输出 …
标签:docker
linux
文章来源: 灵活运用 docker 日志文件大小快速排查异常容器
正文完