首页/云/Docker 容器速查/docker compose ps 查看服务状态
Compose 编排55 条

docker compose ps 查看服务状态

列出项目内服务容器的状态、端口与健康情况:-a 含已停止服务,--format 定制输出,是核对部署结果的第一条命令。

Docker 容器速查云更新于 2026-10-13

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 统计行数就能核对实际副本数,与预期不符说明扩容没生效。

易错点

  • 项目名(-p 参数或执行目录)判断错时列表为空,容易误判成服务全挂,先确认用的 compose 文件与项目名
  • unhealthy 的容器进程仍在运行,只判断进程存在会漏掉这类故障,状态列和应用日志要一起看
  • 只看到 Restarting 看不到原因,退出码与日志才是根因所在,compose ps 只给现象
  • 不带 -a 看不到已退出的一次性任务,核对迁移脚本是否执行过必须加 -a 再看状态列

数据来源与参考

  • Docker 官方 CLI 参考:docker compose ps(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌