Docker 子命令 filter 參數使用實例

很多 Docker 子命令特別是查詢狀態類型的子命令,都有附帶 --filter 參數,
簡寫形式為 -f ,參數後面接著條件句,根據條件句的內容來過濾輸出結果。條件句的語法是

key=value

形式組成。

在鍵(key)的部分,每個子命令可使用的並不一樣。請見下面參考資料。

當然不能忘記在 Linux 系統上,可以通過管道 ( | ) 及 grep 這種常見的組合來過濾輸出結果。而在 Windows Server 系統上,可以通過 PowerShell 命令行環境下的管道 ( | ) 及 Select-String 得到同樣結果。

然而,使用 filter 參數與通過作業系統工具程式仍然是有不一樣的場景。例如下面幾個常見且好用的 filter 參數範例。

範例一:列印 container 名字為 redis 的 container id

$ docker ps --filter name=redis -q

較為複雜一點的,承上,找到 container id 之後,在此 container 裡面運行命令,

$ docker container exec $(docker ps --filter name=redis -q) ls -l /

範例二:列印本機上所有未使用到(dangling)的 images

$ docker image ls -f dangling=true

本機上未使用到(dangling)的 images 會呈現出來像是下面這樣,他們都是可刪除的,

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              8abc22fbb042        4 weeks ago         0 B
<none>              <none>              48e5f45168b9        4 weeks ago         2.489 MB

範例三:把所有虛擬網路驅動為 bridge 的網路列出

$ docker network ls --filter driver=bridge

範例四:追蹤當前本機下 container 名為 redis 有關的即時事件且事件類型為start

$ docker events --filter container=redis --filter event=start


當需要 troubleshooting 的時候,善用這參數可以方便很多。



[參考資料]

https://docs.docker.com/engine/reference/commandline/ps/#filtering

https://docs.docker.com/engine/reference/commandline/images/#filtering

https://docs.docker.com/engine/reference/commandline/network_ls/#filtering

https://docs.docker.com/engine/reference/commandline/events/#limiting-filtering-and-formatting-the-output


留言

這個網誌中的熱門文章

Docker 環境下的 Proxy 配置