应使用 docker compose ps 查看 Docker Compose 容器状态,而非 Linux 的 ps 命令;支持 -a 显示已停止容器、--format 自定义输出,并可结合 docker ps 过滤查看底层细节及 watch 实时刷新。

直接用 ps 命令无法查看 Docker Compose 环境中容器的实时状态——ps 是 Linux 进程查看工具,而 Docker 容器是隔离的进程集合,需通过 Docker 专用命令获取准确、结构化的运行信息。
Docker Compose 自带的 ps 命令
Docker Compose 提供了同名但功能不同的 docker compose ps(v2)或 docker-compose ps(v1),这才是查看当前项目容器状态的正确方式。
- 在
docker-compose.yml所在目录下执行:docker compose ps - 输出包含容器名、状态(Up/Exit)、端口映射、重启策略等关键字段
- 加
-a可显示已停止的容器:docker compose ps -a - 加
--format可自定义输出(如 JSON 或表格列):docker compose ps --format "{{.Name}}\t{{.Status}}"
结合 docker ps 查看更底层细节
当需要确认容器是否真实运行、检查资源占用或排查网络问题时,可补充使用原生 Docker 命令:
-
docker ps -f "label=com.docker.compose.project=your_project_name":按 Compose 项目标签过滤(项目名默认为当前目录名) -
docker ps --filter "status=running" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}":定制化显示运行中容器 -
docker ps -q | xargs -r docker stats --no-stream:快速查看 CPU、内存实时占用(适合监控)
实时刷新状态(类 top 效果)
若需持续观察容器启停、状态变化,可用 watch 命令周期性执行:
-
watch -n 2 'docker compose ps --format "table {{.Name}}\t{{.Status}}\t{{.Health}}"':每 2 秒刷新一次,含健康检查状态 -
watch -n 3 'docker ps --filter "status=running" --format "table {{.Names}}\t{{.Status}}\t{{.Status}}"':专注运行中容器,避免干扰 - 按
Ctrl+C退出 watch
常见误判与排查提示
看到容器“Up”不等于服务就绪,需结合其他信息判断:
- 状态显示
Up 2 minutes (healthy)表示健康检查通过;仅Up 2 minutes则可能服务未就绪 - 状态为
Restarting或Exit 1时,用docker compose logs -f service_name查看实时日志 - 端口未显示(Ports 列为空)通常说明
ports:配置缺失或绑定失败 - 容器名后带
(healthy)或(unhealthy)是健康检查结果,依赖healthcheck:配置


















