Filter 命令

您可以使用--filterflag 来限定命令的范围。筛选时, 命令仅包含与您指定的模式匹配的条目。

使用过滤器

--filterflag 需要一个由运算符分隔的键值对。

$ docker COMMAND --filter "KEY=VALUE"

键表示要筛选的字段。 该值是指定字段必须匹配的模式。 运算符可以是 equals () 或不等于 (=!=).

例如,命令docker images --filter reference=alpine筛选 output 的docker images命令仅打印alpine镜像。

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
ubuntu       20.04     33a5cc25d22c   36 minutes ago   101MB
ubuntu       18.04     152dc042452c   36 minutes ago   88.1MB
alpine       3.16      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.16      a8cbb8c69ee7   40 minutes ago   8.67MB
alpine       latest    7144f7bab3d4   40 minutes ago   11.7MB

可用字段 (reference在本例中)取决于您运行的命令。 某些筛选器需要完全匹配。其他 Deal 处理部分匹配。一些过滤器 允许您使用正则表达式。

请参阅每个命令的 CLI 参考说明以了解 关于每个命令支持的筛选功能。

组合过滤器

您可以通过传递多个--filter标志。这 以下示例显示了如何打印所有匹配的镜像alpine:latestbusybox- 一个逻辑OR.

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       20.04     33a5cc25d22c   2 hours ago   101MB
ubuntu       18.04     152dc042452c   2 hours ago   88.1MB
alpine       3.16      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"

将多个无效标签筛选器组合在一起存在一个问题。多重否定 filters 创建一个负约束 - 一个逻辑AND.以下内容 命令会修剪除标记为 both 的容器之外的所有容器foobar. 标记为foobar,但不能同时删除两者。

$ docker container prune --filter "label!=foo" --filter "label!=bar"

参考

有关筛选命令的更多信息,请参阅 CLI 参考 description (适用于支持--filter旗: