docker logs 可直接查看容器 stdout/stderr 日志;支持 -f 实时跟踪、--since/--until 按时间筛选、--tail 限制行数、-t 添加时间戳;需容器运行过,且日志须输出到标准流。

使用 docker logs 可以直接查看容器运行时的标准输出(stdout)和标准错误(stderr)日志,不需要进入容器内部。
基础用法:查看最近的日志
最简单的命令是:
docker logs 容器名或容器ID
例如:
docker logs my-nginx
这会打印该容器从启动到当前的所有日志。注意,默认不会实时刷新,只显示已有内容。
实时跟踪日志(类似 tail -f)
加 -f 参数可持续输出新日志,适合调试或监控:
-
docker logs -f my-app—— 持续打印新增日志 -
docker logs -f --tail=50 my-app—— 先显示最近50行,再实时跟进
控制输出范围和格式
常用选项组合提升实用性:
-
--since "2024-05-01T10:00:00"—— 查看指定时间之后的日志 -
--until "2024-05-01T12:00:00"—— 查看指定时间之前日志 -
--tail 100—— 仅显示最后100行(支持数字或all) -
-t—— 在每行日志前加上时间戳
示例:
docker logs -t --since "2024-05-01" --tail 20 my-db
注意事项和常见问题
几个关键点避免踩坑:
- 容器必须已运行过(哪怕已停止),否则日志为空;全新创建未启动的容器查不到日志
- 如果应用将日志写入文件而非 stdout/stderr,
docker logs不会捕获——需挂载日志目录或改用日志驱动 - 默认日志驱动是
json-file,日志存在宿主机/var/lib/docker/containers/xxx/xxx-json.log,但建议始终用docker logs查看,不要手动读文件 - 长时间运行的容器日志可能很大,可配合
grep过滤:docker logs my-app 2>&1 | grep ERROR











