[Docker] 用 Docker Registry API v2 快速查遠端 repo 裡,某個映像檔的所有標籤
最近在用公司提供的 Harbor 時,
要查某個映像檔 (image) 有哪些標籤 (tag) 時,總覺得有點麻煩,
需要先登入 Harbor UI > 2FA > 點進 Project > 搜尋映像檔 > 列出標籤,
而且不知為何,列出標籤這個步驟在 UI 上一直都很慢…
查了一下,決定寫一個 Shell script 加上 Docker Registry API v2,
來查遠端 repo 裡,某個映像檔的所有標籤:
#!/bin/bash HOST_IMAGE="$1" if [ -z "${HOST_IMAGE}" ]; then echo "Usage: $0 <repo> <image>" echo "Ex: $0 test.registry.com/myrepo/test-job" exit fi set -euxo pipefail HOST="${HOST_IMAGE%%/*}" IMAGE="${HOST_IMAGE#*/}" CMD_ARRS=() if [[ "${HOST_IMAGE}" == *"test.registry.com/myrepo"* ]]; then CMD_ARRS+=("-u" 'myrepoadmin:12345') elif [[ "${HOST_IMAGE}" == *"test.registry.com/repo2"* ]]; then CMD_ARRS+=("-u" 'repo2admin:45678') fi curl -s "${CMD_ARRS[@]}" "https://${HOST}/v2/${IMAGE}/tags/list" | jq -r '.tags[]' | sort -V
這個 script 裡面還會看目前要連的 repo,
如果有符合的,就自動加上帳號密碼,省得要一直輸入 (雖然是比較不安全啦…)
另外,用到了 sort -V
這個參數,
讓標籤可以用版本的方式排序,這樣像 1.19 才會排在 1.2 的後面~
來看看執行的樣子吧~
$ docker_tags.sh test.registry.com/myrepo/test-job v1.106.8 v1.106.9 v1.106.16 v1.107.1 v1.107.2 v1.110.17 v1.110.18
這個程式跑起來很快,不知為何沒有 Harbor UI 版到處卡卡的問題…
之後想確認特定映像檔的標籤,就可以用這個小 shell script 來解決囉~
參考資料:Docker Registry API – Listing Images and Tags
(本頁面已被瀏覽過 60 次)