满屏栈被 docker logs 卡住那晚,我把参数挨个摸了一遍
接着上一篇〈docker exec 进不去:OCI runtime exec failed〉说,容器进不去,就只剩 docker logs 在门外捞日志这条路。
偏偏那台 CentOS 7.9 上的 pay-gw 一崩就是满屏堆栈,我敲下 docker logs pay-gw,终端直接僵住,等它吐完,最早那几行报错早滚没影了。 Docker 20.10.7。
先只揪尾巴那几十行
排障九成时候,我要的就是最后那五十行:
$ docker logs --tail 50 pay-gw
配上时间戳,好跟旁边几个容器对时间线:
$ docker logs -t --tail 2 pay-gw
2026-09-21T09:14:02.338145771Z ERROR 1 --- [ main] c.z.hikari.pool.HikariPool : HikariPool-1 - Connection is not available, request timed out after 30000ms
2026-09-21T09:14:02.401189223Z ... 30 more
底下那二十几行 at 我截了,跟第一篇里那段一个样。
按时间段切,两头都能卡
--since 和 --until 各管一头,窗口自己定:
$ docker logs --since 10m pay-gw
$ docker logs --since "2026-09-21T09:10:00" --until "2026-09-21T09:15:00" pay-gw
想盯着新日志出来,加 -f,和 tail -f 一个意思:
$ docker logs -f --tail 20 pay-gw
屏实在太多,就 pipe 给 less 慢慢翻,别硬截:
$ docker logs --tail 500 pay-gw 2>&1 | less
那个 2>&1 基本跑不掉。 logs 把 stdout 和 stderr 分两路收,不加这行,less 里就看不到报错那半截。
翻的时候是 less 那套键,空格下一页,/null 往下搜关键字,g 跳回顶,q 退。
参数名和来源这两个坑
没有 --line,也没有 -n。 -n 是 kubectl logs 的写法,docker 这边只认 --tail。
还有个坑我踩实过: logs 只收标准输出和标准错误,应用自己在容器里往文件里写的那一份,这儿一条也看不见。 想看得进容器翻文件去,可这镜像又没带 tail,绕回之前那圈了。
时间戳那八小时
时间戳这串走的是 UTC,跟本地差八小时。 --since 那串不带时区时它按本地时间算,我拿它对过两回,对完才发现对不上。

浙公网安备 33010602011771号