过滤命令
目录
您可以使用 --filter 标志来限定命令的范围。筛选时,命令仅包含与您指定的模式匹配的条目。
使用筛选器
--filter 标志需要一个由运算符分隔的键值对。
$ docker COMMAND --filter "KEY=VALUE"
键表示要筛选的字段。值是指定字段必须匹配的模式。运算符可以是等于 (=) 或不等于 (!=)。
例如,命令 docker images --filter reference=alpine 筛选 docker images 命令的输出,仅打印 alpine 镜像。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 24.04 33a5cc25d22c 36 minutes ago 101MB
ubuntu 22.04 152dc042452c 36 minutes ago 88.1MB
alpine 3.21 a8cbb8c69ee7 40 minutes ago 8.67MB
alpine latest 7144f7bab3d4 40 minutes ago 11.7MB
busybox uclibc 3e516f71d880 48 minutes ago 2.4MB
busybox glibc 7338d0c72c65 48 minutes ago 6.09MB
$ docker images --filter reference=alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine 3.21 a8cbb8c69ee7 40 minutes ago 8.67MB
alpine latest 7144f7bab3d4 40 minutes ago 11.7MB
可用的字段(在此例中为 reference)取决于您运行的命令。一些筛选器需要精确匹配。另一些则处理部分匹配。还有一些筛选器允许您使用正则表达式。
请参阅每个命令的 CLI 参考说明,以了解每个命令支持的筛选功能。
组合筛选器
您可以通过传递多个 --filter 标志来组合多个筛选器。以下示例显示了如何打印所有匹配 alpine:latest 或 busybox 的镜像——一个逻辑 OR。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 24.04 33a5cc25d22c 2 hours ago 101MB
ubuntu 22.04 152dc042452c 2 hours ago 88.1MB
alpine 3.21 a8cbb8c69ee7 2 hours ago 8.67MB
alpine latest 7144f7bab3d4 2 hours ago 11.7MB
busybox uclibc 3e516f71d880 2 hours ago 2.4MB
busybox glibc 7338d0c72c65 2 hours ago 6.09MB
$ docker images --filter reference=alpine:latest --filter=reference=busybox
REPOSITORY TAG IMAGE ID CREATED SIZE
alpine latest 7144f7bab3d4 2 hours ago 11.7MB
busybox uclibc 3e516f71d880 2 hours ago 2.4MB
busybox glibc 7338d0c72c65 2 hours ago 6.09MB
多个否定筛选器
一些命令支持对标签进行否定筛选。否定筛选只考虑不匹配指定模式的结果。以下命令将修剪所有未标记为 foo 的容器。
$ docker container prune --filter "label!=foo"
组合多个否定标签筛选器时有一个陷阱。多个否定筛选器会创建一个单一的否定约束——一个逻辑 AND。以下命令将修剪除同时标记为 foo 和 bar 的容器外的所有容器。仅标记为 foo 或 bar,但不是两者都标记的容器将被修剪。
$ docker container prune --filter "label!=foo" --filter "label!=bar"
参考
有关筛选命令的更多信息,请参阅支持 --filter 标志的命令的 CLI 参考说明。
docker config lsdocker container prunedocker image prunedocker image lsdocker network lsdocker network prunedocker node lsdocker node psdocker plugin lsdocker container lsdocker searchdocker secret lsdocker service lsdocker service psdocker stack psdocker system prunedocker volume lsdocker volume prune