docker ps -f 可精准过滤容器状态、名称、id、镜像等,如 docker ps -f "status=exited" 直接列出已退出容器,多 -f 为“且”关系,配合 --format 可定制清晰输出。

直接用 docker ps 加 -f(或 --filter)就能精准定位容器,不用翻列表、也不依赖 grep 二次筛选。关键在于理解过滤键的语义和组合逻辑。
按状态快速筛出异常容器
运行中、已退出、重启中等状态是排查第一线索:
-
docker ps -f "status=exited":列出所有已停止但未清理的容器 -
docker ps -a -f "status=restarting":专找反复崩溃又重启的容器 -
docker ps -f "status=running" -f "status=paused":同时查运行和暂停态(注意:不能用 or,要重复写 -f)
按名称或 ID 模糊匹配
名称支持通配符和正则,ID 支持前缀模糊:
-
docker ps -f "name=^api-":匹配以api-开头的容器名(^表示开头) -
docker ps -f "name=-worker$":匹配以-worker结尾的容器名 -
docker ps -f "id=a1b2":输入 ID 前 4 位即可命中(Docker 自动做前缀匹配)
按镜像和标签精准锁定
适合多环境共存或 CI/CD 场景:
-
docker ps -f "ancestor=nginx:1.25":查基于该镜像构建的所有容器(支持 tag) -
docker ps -f "label=env=prod":查带env=prod标签的容器(需启动时加--label env=prod) -
docker ps -f "before=my-db":查在my-db容器创建之前启动的所有容器(用于依赖链排查)
组合多个条件缩小范围
多个 -f 是“且”关系,适合交叉验证:
-
docker ps -a -f "name=cache" -f "status=exited":只看叫 cache 且已退出的容器 -
docker ps -f "label=team=backend" -f "status=running":查 backend 团队正在运行的服务 - 配合格式化输出更清晰:
docker ps -f "status=exited" --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Status}}"











