张腾岳 2025-08-02 22:40 采纳率: 98.6%
浏览 4
已采纳

如何使用docker ps --filter按容器状态筛选?

**问题描述:** 在使用 Docker 管理容器时,经常需要根据容器的运行状态进行筛选,例如只查看正在运行的容器或已停止的容器。`docker ps` 命令提供了 `--filter` 参数用于过滤输出结果,但部分用户对其具体用法不熟悉。那么,如何正确使用 `docker ps --filter` 按容器状态(如 running、exited、paused 等)进行筛选?不同状态值的语法格式是什么?是否支持组合多个状态条件?请结合实际命令示例说明其使用方法和常见注意事项。
  • 写回答

1条回答 默认 最新

  • 远方之巅 2025-08-02 22:40
    关注

    一、Docker容器状态筛选基础概念

    docker ps 是 Docker 中查看正在运行容器的标准命令。通过 --filter 参数,可以按条件过滤输出结果,包括容器状态(status)、名称(name)、标签(label)等。

    容器的常见状态包括:

    • running:容器正在运行
    • exited:容器已退出
    • paused:容器被暂停
    • restarting:容器正在重启

    这些状态值在 --filter 参数中使用时,格式为 --filter "status=running",其中 status 是过滤字段,等号后为状态值。

    二、按状态筛选容器的基本命令示例

    以下是一些常见状态筛选的命令示例:

    docker ps --filter "status=running"

    仅显示正在运行的容器。

    docker ps --filter "status=exited"

    显示已退出的容器。

    docker ps --filter "status=paused"

    显示被暂停的容器。

    docker ps --filter "status=restarting"

    显示正在重启的容器。

    三、组合多个状态条件进行筛选

    --filter 支持多个条件组合使用。例如,查看状态为 runningexited 的容器:

    docker ps --filter "status=running" --filter "status=exited"

    该命令会同时显示运行中和已退出的容器。

    注意:多个 --filter 条件之间是“或”关系(OR),而非“与”关系(AND)。

    四、状态筛选的高级用法与常见注意事项

    除了状态筛选,--filter 还支持其他字段,例如:

    • name:按容器名称筛选
    • label:按标签筛选
    • exited:仅用于已退出的容器,可指定退出码

    例如,筛选退出码为 0 的容器:

    docker ps --filter "exited=0"

    或者,结合多个字段进行筛选:

    docker ps --filter "status=running" --filter "name=myapp"

    将显示名称中包含 myapp 且状态为运行中的容器。

    五、状态筛选的典型使用场景与流程图

    在实际运维中,状态筛选常用于自动化脚本、日志分析和故障排查。以下是一个典型流程图,展示如何根据容器状态进行操作决策:

    graph TD A[开始] --> B{容器状态筛选} B --> C[运行中: running] B --> D[已退出: exited] B --> E[暂停中: paused] C --> F[执行监控或日志分析] D --> G[执行重启或日志分析] E --> H[执行恢复或调试]

    六、常见问题与排查建议

    在使用 docker ps --filter 时,可能会遇到以下问题:

    • 无效状态值:确保使用的是 Docker 支持的状态值,如 runningexited 等。
    • 未显示任何结果:检查容器是否真的处于所筛选的状态,或尝试使用 docker ps -a 查看所有容器。
    • 组合条件无效:确认多个 --filter 是“或”关系,而非“与”关系。若需“与”逻辑,需结合其他字段。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月2日