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
簡寫形式為 -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
留言
張貼留言