Docker Compose PS 命令:全方位掌握容器状态监控
-
- 一、命令概述与核心价值
-
- 1.1 基本语法结构
- 1.2 与相关命令的关系对比
- 二、命令参数深度解析
-
- 2.1 关键选项说明
- 2.2 输出字段解析
- 三、典型应用场景实战
-
- 3.1 开发环境状态检查
- 3.2 CI/CD 流水线集成
- 四、高级使用技巧
-
- 4.1 复杂过滤查询
- 4.2 结合格式输出
- 五、常见问题解决方案
-
- 5.1 服务状态异常排查
- 5.2 端口冲突处理
- 六、最佳实践指南
-
- 6.1 日常监控方案
- 6.2 生产环境检查清单
- 七、总结与延伸
|
🌺The Begin🌺点点关注,收藏不迷路🌺 |
一、命令概述与核心价值
docker compose ps 是 Docker Compose 工具链中用于监控服务状态的基础命令,它提供了项目容器运行状态的快照视图,是日常开发和运维中不可或缺的诊断工具。
1.1 基本语法结构
docker compose ps [OPTIONS] [SERVICE...]
1.2 与相关命令的关系对比
#mermaid-svg-L7F4RnR56E93uU3f {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-L7F4RnR56E93uU3f .error-icon{fill:#552222;}#mermaid-svg-L7F4RnR56E93uU3f .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-L7F4RnR56E93uU3f .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-L7F4RnR56E93uU3f .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-L7F4RnR56E93uU3f .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-L7F4RnR56E93uU3f .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-L7F4RnR56E93uU3f .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-L7F4RnR56E93uU3f .marker{fill:#333333;stroke:#333333;}#mermaid-svg-L7F4RnR56E93uU3f .marker.cross{stroke:#333333;}#mermaid-svg-L7F4RnR56E93uU3f svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-L7F4RnR56E93uU3f .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-L7F4RnR56E93uU3f .cluster-label text{fill:#333;}#mermaid-svg-L7F4RnR56E93uU3f .cluster-label span{color:#333;}#mermaid-svg-L7F4RnR56E93uU3f .label text,#mermaid-svg-L7F4RnR56E93uU3f span{fill:#333;color:#333;}#mermaid-svg-L7F4RnR56E93uU3f .node rect,#mermaid-svg-L7F4RnR56E93uU3f .node circle,#mermaid-svg-L7F4RnR56E93uU3f .node ellipse,#mermaid-svg-L7F4RnR56E93uU3f .node polygon,#mermaid-svg-L7F4RnR56E93uU3f .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-L7F4RnR56E93uU3f .node .label{text-align:center;}#mermaid-svg-L7F4RnR56E93uU3f .node.clickable{cursor:pointer;}#mermaid-svg-L7F4RnR56E93uU3f .arrowheadPath{fill:#333333;}#mermaid-svg-L7F4RnR56E93uU3f .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-L7F4RnR56E93uU3f .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-L7F4RnR56E93uU3f .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-L7F4RnR56E93uU3f .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-L7F4RnR56E93uU3f .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-L7F4RnR56E93uU3f .cluster text{fill:#333;}#mermaid-svg-L7F4RnR56E93uU3f .cluster span{color:#333;}#mermaid-svg-L7F4RnR56E93uU3f div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-L7F4RnR56E93uU3f :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
状态查询命令
docker ps
docker compose ps
显示主机所有容器
仅显示当前项目容器
需手动过滤
自动关联compose服务
二、命令参数深度解析
2.1 关键选项说明
| -a, –all | 显示所有容器 | 查看历史容器 | 包含Exited状态 |
| -q, –quiet | 仅显示ID | 脚本处理 | 3a4b5c6d7e8f |
| –services | 列出服务名 | 服务清单 | web\\ndb |
| –filter | 条件过滤 | 精准查询 | 按status/name过滤 |
2.2 输出字段解析
典型输出示例:
NAME COMMAND SERVICE STATUS PORTS
project-web-1 "nginx -g 'daemon…" web running 0.0.0.0:80->80/tcp
project-db-1 "docker-entrypoint.s…" db running 5432/tcp
字段说明图:
#mermaid-svg-SSyd8Mx1Fivd8TZc {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SSyd8Mx1Fivd8TZc .error-icon{fill:#552222;}#mermaid-svg-SSyd8Mx1Fivd8TZc .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-SSyd8Mx1Fivd8TZc .marker{fill:#333333;stroke:#333333;}#mermaid-svg-SSyd8Mx1Fivd8TZc .marker.cross{stroke:#333333;}#mermaid-svg-SSyd8Mx1Fivd8TZc svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-SSyd8Mx1Fivd8TZc g.classGroup text{fill:#9370DB;fill:#131300;stroke:none;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:10px;}#mermaid-svg-SSyd8Mx1Fivd8TZc g.classGroup text .title{font-weight:bolder;}#mermaid-svg-SSyd8Mx1Fivd8TZc .nodeLabel,#mermaid-svg-SSyd8Mx1Fivd8TZc .edgeLabel{color:#131300;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edgeLabel .label rect{fill:#ECECFF;}#mermaid-svg-SSyd8Mx1Fivd8TZc .label text{fill:#131300;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edgeLabel .label span{background:#ECECFF;}#mermaid-svg-SSyd8Mx1Fivd8TZc .classTitle{font-weight:bolder;}#mermaid-svg-SSyd8Mx1Fivd8TZc .node rect,#mermaid-svg-SSyd8Mx1Fivd8TZc .node circle,#mermaid-svg-SSyd8Mx1Fivd8TZc .node ellipse,#mermaid-svg-SSyd8Mx1Fivd8TZc .node polygon,#mermaid-svg-SSyd8Mx1Fivd8TZc .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-SSyd8Mx1Fivd8TZc .divider{stroke:#9370DB;stroke:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc g.clickable{cursor:pointer;}#mermaid-svg-SSyd8Mx1Fivd8TZc g.classGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-SSyd8Mx1Fivd8TZc g.classGroup line{stroke:#9370DB;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-SSyd8Mx1Fivd8TZc .classLabel .label{fill:#9370DB;font-size:10px;}#mermaid-svg-SSyd8Mx1Fivd8TZc .relation{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-SSyd8Mx1Fivd8TZc .dashed-line{stroke-dasharray:3;}#mermaid-svg-SSyd8Mx1Fivd8TZc #compositionStart,#mermaid-svg-SSyd8Mx1Fivd8TZc .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #compositionEnd,#mermaid-svg-SSyd8Mx1Fivd8TZc .composition{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #dependencyStart,#mermaid-svg-SSyd8Mx1Fivd8TZc .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #dependencyStart,#mermaid-svg-SSyd8Mx1Fivd8TZc .dependency{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #extensionStart,#mermaid-svg-SSyd8Mx1Fivd8TZc .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #extensionEnd,#mermaid-svg-SSyd8Mx1Fivd8TZc .extension{fill:#333333!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #aggregationStart,#mermaid-svg-SSyd8Mx1Fivd8TZc .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc #aggregationEnd,#mermaid-svg-SSyd8Mx1Fivd8TZc .aggregation{fill:#ECECFF!important;stroke:#333333!important;stroke-width:1;}#mermaid-svg-SSyd8Mx1Fivd8TZc .edgeTerminals{font-size:11px;}#mermaid-svg-SSyd8Mx1Fivd8TZc :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
ContainerStatus
+Name: string
+Command: string
+Service: string
+Status: string
+Ports: string
三、典型应用场景实战
3.1 开发环境状态检查
docker compose ps –filter "status=running"
状态转换图:
#mermaid-svg-qnosk2gUPHr0Z867 {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qnosk2gUPHr0Z867 .error-icon{fill:#552222;}#mermaid-svg-qnosk2gUPHr0Z867 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-qnosk2gUPHr0Z867 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-qnosk2gUPHr0Z867 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-qnosk2gUPHr0Z867 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-qnosk2gUPHr0Z867 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-qnosk2gUPHr0Z867 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-qnosk2gUPHr0Z867 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 .marker.cross{stroke:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-qnosk2gUPHr0Z867 defs #statediagram-barbEnd{fill:#333333;stroke:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 g.stateGroup text{fill:#9370DB;stroke:none;font-size:10px;}#mermaid-svg-qnosk2gUPHr0Z867 g.stateGroup text{fill:#333;stroke:none;font-size:10px;}#mermaid-svg-qnosk2gUPHr0Z867 g.stateGroup .state-title{font-weight:bolder;fill:#131300;}#mermaid-svg-qnosk2gUPHr0Z867 g.stateGroup rect{fill:#ECECFF;stroke:#9370DB;}#mermaid-svg-qnosk2gUPHr0Z867 g.stateGroup line{stroke:#333333;stroke-width:1;}#mermaid-svg-qnosk2gUPHr0Z867 .transition{stroke:#333333;stroke-width:1;fill:none;}#mermaid-svg-qnosk2gUPHr0Z867 .stateGroup .composit{fill:white;border-bottom:1px;}#mermaid-svg-qnosk2gUPHr0Z867 .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px;}#mermaid-svg-qnosk2gUPHr0Z867 .state-note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-qnosk2gUPHr0Z867 .state-note text{fill:black;stroke:none;font-size:10px;}#mermaid-svg-qnosk2gUPHr0Z867 .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5;}#mermaid-svg-qnosk2gUPHr0Z867 .edgeLabel .label rect{fill:#ECECFF;opacity:0.5;}#mermaid-svg-qnosk2gUPHr0Z867 .edgeLabel .label text{fill:#333;}#mermaid-svg-qnosk2gUPHr0Z867 .label div .edgeLabel{color:#333;}#mermaid-svg-qnosk2gUPHr0Z867 .stateLabel text{fill:#131300;font-size:10px;font-weight:bold;}#mermaid-svg-qnosk2gUPHr0Z867 .node circle.state-start{fill:#333333;stroke:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 .node .fork-join{fill:#333333;stroke:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 .node circle.state-end{fill:#9370DB;stroke:white;stroke-width:1.5;}#mermaid-svg-qnosk2gUPHr0Z867 .end-state-inner{fill:white;stroke-width:1.5;}#mermaid-svg-qnosk2gUPHr0Z867 .node rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qnosk2gUPHr0Z867 .node polygon{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qnosk2gUPHr0Z867 #statediagram-barbEnd{fill:#333333;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-cluster rect{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-qnosk2gUPHr0Z867 .cluster-label,#mermaid-svg-qnosk2gUPHr0Z867 .nodeLabel{color:#131300;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-cluster rect.outer{rx:5px;ry:5px;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-state .divider{stroke:#9370DB;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-state .title-state{rx:5px;ry:5px;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-cluster.statediagram-cluster .inner{fill:white;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-cluster.statediagram-cluster-alt .inner{fill:#f0f0f0;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-cluster .inner{rx:0;ry:0;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-state rect.basic{rx:5px;ry:5px;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#f0f0f0;}#mermaid-svg-qnosk2gUPHr0Z867 .note-edge{stroke-dasharray:5;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-note rect{fill:#fff5ad;stroke:#aaaa33;stroke-width:1px;rx:0;ry:0;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-note text{fill:black;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram-note .nodeLabel{color:black;}#mermaid-svg-qnosk2gUPHr0Z867 .statediagram .edgeLabel{color:red;}#mermaid-svg-qnosk2gUPHr0Z867 #dependencyStart,#mermaid-svg-qnosk2gUPHr0Z867 #dependencyEnd{fill:#333333;stroke:#333333;stroke-width:1;}#mermaid-svg-qnosk2gUPHr0Z867 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
start
crash
success
stop
rm
Created
Running
Restarting
Exited
3.2 CI/CD 流水线集成
# 检查服务是否健康
if [ $(docker compose ps -q | wc -l) -eq 3 ]; then
echo "所有服务运行正常"
else
exit 1
fi
自动化检测流程:
#mermaid-svg-wNdtBCGr9OpQ8VE3 {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .error-icon{fill:#552222;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .marker.cross{stroke:#333333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wNdtBCGr9OpQ8VE3 text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actor-line{stroke:grey;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .sequenceNumber{fill:white;}#mermaid-svg-wNdtBCGr9OpQ8VE3 #sequencenumber{fill:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .messageText{fill:#333;stroke:#333;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .labelText,#mermaid-svg-wNdtBCGr9OpQ8VE3 .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .loopText,#mermaid-svg-wNdtBCGr9OpQ8VE3 .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-wNdtBCGr9OpQ8VE3 .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .noteText,#mermaid-svg-wNdtBCGr9OpQ8VE3 .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actorPopupMenu{position:absolute;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-wNdtBCGr9OpQ8VE3 .actor-man circle,#mermaid-svg-wNdtBCGr9OpQ8VE3 line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-wNdtBCGr9OpQ8VE3 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
CI_Server
Docker
CD_Server
Alert
compose ps -q
容器ID列表
验证数量
触发部署
发送告警
alt
[数量匹配]
[数量不足]
CI_Server
Docker
CD_Server
Alert
四、高级使用技巧
4.1 复杂过滤查询
# 查找异常退出的前端容器
docker compose ps -a –filter "status=exited" –filter "name=frontend"
过滤逻辑图:
#mermaid-svg-NzbIwC7CeDhmXAN9 {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .error-icon{fill:#552222;}#mermaid-svg-NzbIwC7CeDhmXAN9 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-NzbIwC7CeDhmXAN9 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .marker.cross{stroke:#333333;}#mermaid-svg-NzbIwC7CeDhmXAN9 svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .cluster-label text{fill:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .cluster-label span{color:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .label text,#mermaid-svg-NzbIwC7CeDhmXAN9 span{fill:#333;color:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .node rect,#mermaid-svg-NzbIwC7CeDhmXAN9 .node circle,#mermaid-svg-NzbIwC7CeDhmXAN9 .node ellipse,#mermaid-svg-NzbIwC7CeDhmXAN9 .node polygon,#mermaid-svg-NzbIwC7CeDhmXAN9 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .node .label{text-align:center;}#mermaid-svg-NzbIwC7CeDhmXAN9 .node.clickable{cursor:pointer;}#mermaid-svg-NzbIwC7CeDhmXAN9 .arrowheadPath{fill:#333333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-NzbIwC7CeDhmXAN9 .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-NzbIwC7CeDhmXAN9 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-NzbIwC7CeDhmXAN9 .cluster text{fill:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 .cluster span{color:#333;}#mermaid-svg-NzbIwC7CeDhmXAN9 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-NzbIwC7CeDhmXAN9 :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
所有容器
状态=exited
名称含frontend
结果集
4.2 结合格式输出
# 自定义输出格式
docker compose ps –format "table {{.Names}}\\t{{.Status}}\\t{{.Ports}}"
格式化输出对比:
| 多列完整信息 | 仅显示关键三列 |
五、常见问题解决方案
5.1 服务状态异常排查
问题现象:
STATUS: Restarting (1) 2 minutes ago
诊断流程:
#mermaid-svg-QIejUVqJCij4zm5B {font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QIejUVqJCij4zm5B .error-icon{fill:#552222;}#mermaid-svg-QIejUVqJCij4zm5B .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QIejUVqJCij4zm5B .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-QIejUVqJCij4zm5B .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QIejUVqJCij4zm5B .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QIejUVqJCij4zm5B .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QIejUVqJCij4zm5B .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QIejUVqJCij4zm5B .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QIejUVqJCij4zm5B .marker.cross{stroke:#333333;}#mermaid-svg-QIejUVqJCij4zm5B svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QIejUVqJCij4zm5B .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-QIejUVqJCij4zm5B .cluster-label text{fill:#333;}#mermaid-svg-QIejUVqJCij4zm5B .cluster-label span{color:#333;}#mermaid-svg-QIejUVqJCij4zm5B .label text,#mermaid-svg-QIejUVqJCij4zm5B span{fill:#333;color:#333;}#mermaid-svg-QIejUVqJCij4zm5B .node rect,#mermaid-svg-QIejUVqJCij4zm5B .node circle,#mermaid-svg-QIejUVqJCij4zm5B .node ellipse,#mermaid-svg-QIejUVqJCij4zm5B .node polygon,#mermaid-svg-QIejUVqJCij4zm5B .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QIejUVqJCij4zm5B .node .label{text-align:center;}#mermaid-svg-QIejUVqJCij4zm5B .node.clickable{cursor:pointer;}#mermaid-svg-QIejUVqJCij4zm5B .arrowheadPath{fill:#333333;}#mermaid-svg-QIejUVqJCij4zm5B .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QIejUVqJCij4zm5B .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QIejUVqJCij4zm5B .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-QIejUVqJCij4zm5B .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-QIejUVqJCij4zm5B .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QIejUVqJCij4zm5B .cluster text{fill:#333;}#mermaid-svg-QIejUVqJCij4zm5B .cluster span{color:#333;}#mermaid-svg-QIejUVqJCij4zm5B div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QIejUVqJCij4zm5B :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}
状态异常
查看日志
检查资源
docker compose logs
docker stats
定位错误
确认资源
5.2 端口冲突处理
解决方案:
– "8080:80"
六、最佳实践指南
6.1 日常监控方案
推荐命令组合:
watch -n 5 'docker compose ps –filter "status=running"'
监控指标:
- 容器运行数量
- 运行时长
- 端口映射状态
6.2 生产环境检查清单
七、总结与延伸
docker compose ps 作为容器状态监控的入口命令,主要应用于:
进阶技巧:
- 结合 docker compose top 查看进程
- 使用 docker compose events 监控状态变化
- 通过 docker compose images 检查镜像版本
通过掌握这些技巧,开发者可以构建完整的容器监控体系,实现从状态检查到问题定位的全流程管理。

|
🌺The End🌺点点关注,收藏不迷路🌺 |





