docker ps本身不支持实时监控,仅一次性列出当前运行容器;但可通过watch命令实现每秒刷新,结合-a查看所有状态容器,并用--filter或grep筛选exited、restarting等生命周期状态。
docker ps 本身不支持“实时监控”——它只是一次性列出当前运行中的容器。但可以通过组合 unix 工具实现类似 top 的动态刷新效果,同时配合不同选项观察处于不同生命周期阶段的容器(如运行中、已退出、所有容器)。关键在于理解 docker ps 的常用选项和如何用 shell 实现持续更新。
查看正在运行的容器(默认行为)
命令:docker ps
这是最常用的形式,只显示 状态为 Up 的容器(即正在运行的)。它不显示已停止、创建失败或退出的容器。
查看所有容器(含已停止的)
命令:docker ps -a
加上 -a(all)参数后,会列出所有容器记录,包括:
- 已退出(Exited)的容器
- 创建后未启动(Created)的容器
- 正在运行(Up)的容器
- 重启中(Restarting)、暂停(Paused)等非常规状态
实时刷新容器列表(类 top 效果)
命令:watch -n 1 'docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"'watch 是 Linux 常用的定时执行命令工具。
- -n 1 表示每 1 秒刷新一次
- --format 自定义输出列,避免默认输出过宽或包含不关心字段
- 可替换为 docker ps -a --format ... 来同时监控已退出容器的变化
快速识别生命周期状态的关键字段
在 `docker ps` 输出中,Status 列直接反映容器所处生命周期阶段:
- Up 2 minutes:正常运行中
- Exited (0) 3 seconds ago:已成功退出(返回码 0)
- Exited (137) 10 seconds ago:被 OOM killer 终止(常见于内存超限)
- Created:容器已创建但尚未启动
- Restarting (1):启动失败后自动重启中
- Paused:被手动暂停(docker pause)
补充技巧:过滤特定状态的容器
若只想关注某类状态,可用 grep 或 docker ps 内置过滤:
- 查看所有已退出容器:docker ps -a | grep "Exited"
- 查看最近 5 分钟内退出的容器:docker ps -a --filter "status=exited" --filter "since=5m"
- 查看所有重启中的容器:docker ps -a --filter "status=restarting"











