欢迎光临
我们一直在努力

Docker Compose PS 命令:全方位掌握容器状态监控

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 端口冲突处理

解决方案:

  • 查找占用进程:sudo lsof -i :80
  • 修改compose文件:ports:
    "8080:80"
  • 六、最佳实践指南

    6.1 日常监控方案

    推荐命令组合:

    watch -n 5 'docker compose ps –filter "status=running"'

    监控指标:

    • 容器运行数量
    • 运行时长
    • 端口映射状态

    6.2 生产环境检查清单

  • 基础检查:docker compose ps -a
  • 网络验证:docker compose port web 80
  • 健康检查:docker compose exec web curl localhost:8080/health
  • 七、总结与延伸

    docker compose ps 作为容器状态监控的入口命令,主要应用于:

  • 快速诊断:即时查看服务健康状态
  • 环境验证:确认部署结果
  • 问题排查:识别异常容器
  • 进阶技巧:

    • 结合 docker compose top 查看进程
    • 使用 docker compose events 监控状态变化
    • 通过 docker compose images 检查镜像版本

    通过掌握这些技巧,开发者可以构建完整的容器监控体系,实现从状态检查到问题定位的全流程管理。

    在这里插入图片描述

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

    赞(0)
    未经允许不得转载:171主机测评 » Docker Compose PS 命令:全方位掌握容器状态监控
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址