Docker PS 命令:从基础查询到高级过滤

发布于:2025-08-20 ⋅ 阅读:(20) ⋅ 点赞:(0)

Docker PS 命令:从基础查询到高级过滤

    • 一、核心架构图解
      • 1.1 命令执行流程
      • 1.2 容器状态生命周期
    • 二、参数详解与使用场景
      • 2.1 命令基础语法
      • 2.2 参数功能矩阵
    • 三、实战操作指南
      • 3.1 基础查询技巧
        • 标准列表查看
        • 显示完整信息
      • 3.2 高级过滤查询
        • 状态过滤
        • 标签过滤
    • 四、企业级最佳实践
      • 4.1 生产环境监控方案
      • 4.2 格式化输出模板
    • 五、常见问题排查
      • 5.1 状态异常分析表
      • 5.2 性能优化查询
    • 六、与编排系统集成
      • 6.1 Kubernetes对比
      • 6.2 Swarm服务查询
    • 七、安全注意事项
      • 7.1 敏感信息防护
      • 7.2 权限控制建议
    • 八、自动化脚本应用
      • 8.1 容器健康检查
      • 8.2 资源报表生成
    • 九、可视化展示方案
      • 9.1 终端表格美化
      • 9.2 监控面板集成
    • 十、总结与黄金法则
      • 10.1 查询决策树
      • 10.2 最佳实践清单


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

一、核心架构图解

1.1 命令执行流程

User Docker Client Docker Daemon ContainerDB ps [OPTIONS] API请求 查询容器数据 返回元数据 格式化输出结果 User Docker Client Docker Daemon ContainerDB

1.2 容器状态生命周期

docker create
docker start
docker pause
docker unpause
进程结束
异常退出
重启成功
created
running
paused
exited
restarting

二、参数详解与使用场景

2.1 命令基础语法

docker ps [OPTIONS]

2.2 参数功能矩阵

参数 全称 作用 典型应用场景 输出示例
-a --all 显示所有容器 系统维护 包括已停止容器
-q --quiet 只显示ID 脚本处理 c3f279d17e0a
-l --latest 显示最新容器 快速调试 最近创建的1个
-n - 显示n个最新 批量操作 最近3个容器
-s --size 显示磁盘占用 容量监控 +2MB (virtual 65MB)
--no-trunc - 不截断输出 完整信息查看 显示完整ID
--filter -f 条件过滤 精准查询 status=running
--format - 自定义格式 报表生成 表格/JSON输出

三、实战操作指南

3.1 基础查询技巧

标准列表查看
docker ps

输出字段说明:

CONTAINER_ID
IMAGE
COMMAND
CREATED
STATUS
PORTS
NAMES
显示完整信息
docker ps --no-trunc -a

3.2 高级过滤查询

状态过滤
docker ps -f "status=exited" -f "ancestor=nginx"
标签过滤
docker ps -f "label=environment=production"

四、企业级最佳实践

4.1 生产环境监控方案

定时任务
docker ps -q
资源指标采集
异常报警
监控面板

4.2 格式化输出模板

# 自定义表格输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Size}}"

# JSON格式输出
docker ps --format '{{json .}}' | jq

五、常见问题排查

5.1 状态异常分析表

状态 可能原因 检查方法
restarting 持续崩溃 docker logs --tail 50
paused 人工干预 docker inspect
dead 严重错误 系统日志检查
exited(非0) 启动失败 返回码分析

5.2 性能优化查询

# 只查询必要字段
docker ps -a --format "{{.ID}} {{.Names}}"

# 使用grep二次过滤
docker ps --no-trunc | grep "异常关键词"

六、与编排系统集成

6.1 Kubernetes对比

45% 55% 查询命令对比 docker ps kubectl get pods

6.2 Swarm服务查询

# 服务与容器关联查询
docker service ps $(docker service ls -q) --no-trunc

七、安全注意事项

7.1 敏感信息防护

# 避免暴露环境变量
docker ps --format "table {{.ID}}\t{{.Names}}" | grep -v "secret"

7.2 权限控制建议

# 创建只读权限角色
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "docker:ps"
      ],
      "Resource": "*"
    }
  ]
}

八、自动化脚本应用

8.1 容器健康检查

#!/bin/bash
# 检查异常容器
docker ps -a -f "status=exited" --format "{{.ID}}" | while read id; do
    echo "异常容器: $id $(docker inspect -f '{{.State.Error}}' $id)"
done

8.2 资源报表生成

docker ps -a --format "{{.Names}},{{.Status}},{{.Size}}" > container_report.csv

九、可视化展示方案

9.1 终端表格美化

docker ps --format "table {{.ID}}\t{{.Image}}\t{{.RunningFor}}\t{{.Status}}" | column -t -s $'\t'

9.2 监控面板集成

docker ps -q
Prometheus
Grafana
AlertManager

十、总结与黄金法则

10.1 查询决策树

运行中
全部
特定条件
需要查询
查询范围
默认ps
-a参数
-f过滤
--format输出

10.2 最佳实践清单

  1. 生产环境:定期使用-a检查僵尸容器
  2. 批量操作:结合-q输出用于脚本处理
  3. 故障排查:优先使用-l查看最新容器
  4. 安全审计:记录关键查询操作日志

终极查询模板:

function docker_ps_enhanced() {
    local format="table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"
    local filter=""
    
    case $1 in
        "all") filter="-a" ;;
        "dead") filter="-f status=dead" ;;
        "exited") filter="-f status=exited" ;;
        "running") filter="-f status=running" ;;
    esac
    
    docker ps $filter --format "$format" | column -t -s $'\t'
}

在这里插入图片描述


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

网站公告

今日签到

点亮在社区的每一天
去签到