compose ps 是什么
docker compose ps 列出当前项目内服务容器的状态、端口与健康情况,是核对部署结果的第一条命令。它默认只显示运行中的容器,加 -a 才包含已停止的服务;项目名判断错时输出为空,很容易被误读成服务全挂。
基本信息
| 用途 | 按项目查看服务容器状态 |
|---|---|
| 常用参数 | -a 含已停止 / --status 过滤状态 / --format 定制列 / -q 只输出容器 ID |
| 范围 | 当前项目,由 -p 参数或执行目录决定 |
| 状态列 | running、exited、restarting,健康检查通过时带 (healthy) |
| 相关命令 | docker ps 是全量视角,compose ps 是项目视角 |
典型使用场景
- 部署后的第一项检查:确认所有服务都起来了,端口与预期一致
- 排出问题时看哪个副本在反复重启,Status 里会不断刷新退出时间
- 用 -q 取出容器 ID 喂给 docker exec、docker logs 做批处理
- CI 里判断一次性任务(数据库迁移)是否已经执行结束
- 出巡检报告时用 --format 定制列,直接产出表格或 JSON
- 核对服务名与容器名的对应关系,确定 exec 该指定哪个服务
示例
示例
docker compose ps # 仅运行中的服务
docker compose ps -a # 含已停止容器,看退出情况需要它
docker compose ps --format 'table {{.Service}}\t{{.Status}}\t{{.Ports}}'
docker compose ps -q web | xargs -r docker logs --tail=50 # 指定服务批量看日志
docker compose ps --status exited # 只看已退出的一次性任务状态列怎么读
| 显示内容 | 含义 | 下一步动作 |
|---|---|---|
| Up 5 minutes | 容器运行中,数字为持续时间 | 正常 |
| Up 2 minutes (healthy) | 健康检查通过 | 可以对外提供服务 |
| Up 3 minutes (unhealthy) | 进程在跑但检查失败 | 看日志与检查命令,常见是依赖未就绪 |
| Restarting | 正在重启,通常是循环中 | 查退出码与应用日志 |
| Exited (0) | 正常退出,一次性任务常见 | 确认任务真的完成 |
| Exited (137) | 被强制杀掉,多为超内存 | 看 OOMKilled 标记与内存限额 |
compose ps 与 docker ps 数据源相同,差别是按项目过滤并多一列服务名;跨项目混合排查时用 docker ps 加 label 过滤反而更直接。
服务有多副本时每个副本各占一行,配合 --format 统计行数就能核对实际副本数,与预期不符说明扩容没生效。