最常用且最有效的组合是用 docker ps 查状态、docker logs -f 看实时日志;docker ps 显示 status 为 up 表示正常运行,names 便于后续查日志,ports 辅助判断服务就绪;若容器未出现,可用 docker ps -a | grep 关键词排查;实时日志推荐 docker logs --tail n -f 容器名,可加 -t 显示时间戳或 --since 10m 查近期日志;若日志为空,需检查日志驱动类型或应用是否写入文件而非 stdout/stderr。

直接用 docker ps 查状态,用 docker logs -f 看实时日志,这是最常用也最有效的组合。
快速确认容器是否在运行
执行以下命令列出所有正在运行的容器:
docker ps
输出中重点关注三列:
-
STATUS:显示
Up X hours表示正常运行;若为Exited (1)等,则已异常退出 - NAMES:记录容器名称,后续查日志时直接使用,比记 ID 更方便
- PORTS:端口映射是否成功,可辅助判断服务是否就绪
如果目标容器没出现在列表里,先运行 docker ps -a | grep [关键词] 查看是否曾启动过但已退出。
查看实时滚动日志(带最新 N 行)
想一边看最后几百行历史,一边持续接收新日志,用这个命令:
docker logs -n 300 -f
等价写法:docker logs --tail 300 --follow
常见变体:
- 只看最新 50 行且不持续:加
--tail 50即可 - 带上时间戳便于定位:追加
-t参数,如docker logs -t -n 100 -f nginx - 查最近 10 分钟的日志:用
--since 10m,注意需日志含时间戳才准确
日志查不到?检查日志驱动和应用写入位置
如果 docker logs 返回空或报错,可能是以下原因:
- 容器配置了
none、syslog或fluentd日志驱动,此时docker logs不生效。可用docker inspect --format='{{.HostConfig.LogConfig.Type}}'确认 - 应用本身没输出到 stdout/stderr,而是写入了文件(如
/var/log/app.log)。这时需进入容器查看:docker exec tail -50 /var/log/app.log - 容器刚启动就崩溃,还没来得及输出日志。此时重点看退出码:
docker inspect --format='{{.State.ExitCode}} {{.State.Error}}'
补充:快速定位容器并一键查日志
如果你只记得部分容器名(比如叫 api),可以组合命令一次性完成查找与日志查看:
docker ps --filter "name=api" --format "{{.Names}}" | xargs -I {} docker logs -n 200 -f {}
这条命令会自动找出名字含 api 的运行中容器,并对其执行“查最后 200 行 + 实时跟踪”操作。











