docker compose ps 是什么
docker compose ps 列出当前项目下各服务的容器状态,包括运行状态、端口映射与健康状态。它按项目名筛选,项目名默认由所在目录名推导,因此不会混入其他目录启动的同名服务。加上 --all 可以看到已退出的容器及其退出码,加上 --format json 则输出结构化数据供脚本消费,是排查『哪个服务没起来』的第一步。
基本信息
| 默认行为 | 只列出运行中的服务容器 |
|---|---|
| --all / -a | 包含已退出容器,可以直接看到退出码 |
| --status | 按状态过滤:running、exited、paused 等 |
| --format json | 结构化输出,供 CI 与脚本判断 |
| 项目范围 | 只显示当前项目的容器,项目名按目录推导 |
典型使用场景
- 启动后确认所有服务是否都成功拉起,还是有个别服务没起来
- 排查某个服务没起来的原因:用 --all 看到退出码,再去看该服务日志
- CI 流水线用 json 输出判断部署是否成功,失败时自动输出容器状态
- 核对端口映射与预期是否一致,避免发布到错的端口
- 结合健康状态确认服务是否真正就绪,而不只是进程存在
使用示例
使用示例
docker compose ps
docker compose ps --all
docker compose ps --format json | head -40
docker compose ps web --status running # 只看指定服务的运行状态
# 部署脚本里判断是否有服务未运行:先取 json 再按状态过滤状态与含义
| 状态 | 含义 | 下一步 |
|---|---|---|
| running | 容器正在运行 | 结合健康状态判断是否已就绪 |
| exited (0) | 进程正常结束 | 确认是否本身就是任务型服务 |
| exited (非 0) | 异常退出 | 查看该服务日志定位报错 |
| restarting | 处于重启循环 | 按容器反复重启的路径排查 |
| created | 已创建但未启动 | 确认依赖条件是否满足 |
compose ps 只显示当前项目的容器:项目名按目录推导,因此同一台机器上不同目录启动的同名服务不会互相干扰,各自的端口与状态互不混淆。
在错误的目录执行会显示为空,容易被误判为『服务全挂了』:执行前先确认当前目录与项目名,或者用 -p 显式指定项目名称。