常识指南
柔彩主题三 · 更轻盈的阅读体验

Docker容器错误日志查看方法详解

发布时间:2025-12-28 05:40:27 阅读:299 次

ref="/tag/2019/" style="color:#3D6345;font-weight:bold;">Docker容器时,程序突然不工作了,页面打不开,接口返回500,这时候第一反应该看哪?别急着重启容器,先查日志才是正路。很多新手一出问题就docker restart,治标不治本,真正的问题藏在日志里。

用docker logs命令查看容器日志

最直接的办法就是使用docker logs命令。假设你的容器名叫web-app,执行下面这行:

docker logs web-app

就能看到这个容器输出的所有日志内容。如果程序在启动时报了错,比如配置文件路径不对、数据库连不上,这些都会原原本本地打印出来。

有时候日志太多,只想看最近几行,可以加--tail参数:

docker logs --tail 50 web-app

这样只显示最新的50行,快速定位问题。

还想实时盯着日志看?加上-f参数,跟tail -f一样:

docker logs -f web-app

这时候你再触发个请求,马上就能看到新日志刷出来。

时间戳帮你定位问题发生时刻

如果想确认某条日志是什么时候产生的,加上--timestamps或简写-t

docker logs -t web-app

每行日志前面就会带上精确到纳秒的时间,排查问题时特别有用。比如运维说“三点钟系统崩了”,你就可以过滤那个时间段的日志,一眼看出是不是某个异常导致的。

容器启动失败?可能是根本没跑起来

有时候容器起不来,docker ps看不到,但docker ps -a能看见它状态是Exited。这时候照样能查日志:

docker logs 容器ID

哪怕容器只运行了几秒就退出,日志也保留着。常见情况比如Node.js应用缺少依赖包,Python脚本语法错误,或者端口被占用,都会在日志里清清楚楚写出来。

日志太多怎么办?导出到文件分析

有些服务日志量特别大,终端刷屏看不清。可以直接导出到文件:

docker logs web-app > app.log

然后用vim、less或者文本编辑器慢慢翻。想查特定关键词,配合grep更高效:

docker logs web-app | grep ERROR

把所有带ERROR的行筛出来,问题范围立马缩小。

注意:日志只包含标准输出

有个坑得提一下:docker logs只能看到容器内进程输出到stdout和stderr的内容。如果你的应用把日志写进了文件,比如/var/log/app.log,那用这个命令是看不到的。

这时候得进容器内部看:

docker exec -it web-app cat /var/log/app.log

或者直接挂载宿主机目录,把日志落盘,方便长期保存和分析。

小技巧:给容器起个好名字

别用默认生成的随机名字,比如adoring_cori这种,记不住还容易混淆。启动时用--name指定一个有意义的名字:

docker run -d --name api-service myapp:latest

以后查日志、进容器都方便多了,一看就知道是干啥的。

排查Docker容器问题,别慌,先看日志。掌握这几个命令,大多数故障都能快速定位,省下不少折腾时间。