docker logs 是排查容器运行问题最直接的命令,用于查看 stdout/stderr;需结合 --tail、-f、--since 等参数精准过滤,避免信息过载,并注意日志驱动限制(如 max-size/max-file)导致历史日志被轮转删除。
docker logs 是排查容器运行问题最直接的命令,它能快速查看容器的标准输出(stdout)和标准错误(stderr)。关键在于用对参数,避免被海量日志淹没或漏掉关键信息。
基础用法:看最新日志
最常用的是直接加容器名或 ID:
- docker logs my-nginx —— 查看容器启动以来的所有日志(可能很长)
- docker logs --tail 50 my-nginx —— 只看最后 50 行,适合快速定位最近异常
-
docker logs -f my-nginx —— 实时跟踪日志(类似
tail -f),按Ctrl+C退出
按时间过滤:缩小排查范围
如果知道出问题的大致时间,用 --since 和 --until 精准抓取:
- docker logs --since "2024-05-20T14:00:00" my-app —— 查看从该时间点之后的日志
-
docker logs --since 30m my-app —— 查看最近 30 分钟日志(支持
m、h、s单位) - docker logs --since 2h --until "2024-05-20T15:30:00" my-app —— 时间段组合更精准
结合其他命令提升效率
单独看日志常不够,配合管道和搜索更高效:
- docker logs my-app | grep "ERROR" —— 快速筛选错误行
- docker logs --tail 100 my-app | grep -i "timeout\|fail" —— 查最近 100 行中的关键词(忽略大小写)
-
docker logs -f my-app 2>&1 | grep --line-buffered "started" —— 实时过滤特定事件(
2>&1合并 stderr,--line-buffered防止卡住)
注意日志驱动和存储限制
不是所有日志都能查到——Docker 默认用 json-file 驱动,但可能设置了日志大小或文件数量上限:
- 检查配置:docker inspect my-app | grep -A 5 LogConfig
- 常见限制:
"max-size": "10m", "max-file": "3"意味着最多保留 3 个 10MB 的日志文件,旧日志会被轮转删除 - 若发现日志“突然变短”或查不到历史记录,很可能是被自动清理了,需提前调整 daemon.json 中的
log-driver和log-opts


















