過濾命令

您可以使用 --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:latestbusybox 的映象——一個邏輯 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。以下命令將修剪除同時標記為 foobar 的容器外的所有容器。僅標記為 foobar,但不是兩者都標記的容器將被修剪。

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

參考

有關篩選命令的更多資訊,請參閱支援 --filter 標誌的命令的 CLI 參考說明。