[Docker] 用 Docker Registry API v2 快速查遠端 repo 裡,某個映像檔的所有標籤

[Docker] 用 Docker Registry API v2 快速查遠端 repo 裡,某個映像檔的所有標籤

最近在用公司提供的 Harbor 時,

要查某個映像檔 (image) 有哪些標籤 (tag) 時,總覺得有點麻煩,

需要先登入 Harbor UI > 2FA > 點進 Project > 搜尋映像檔 > 列出標籤,

而且不知為何,列出標籤這個步驟在 UI 上一直都很慢…

 

查了一下,決定寫一個 Shell script 加上 Docker Registry API v2,

來查遠端 repo 裡,某個映像檔的所有標籤:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/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
#!/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
#!/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
sort -V 這個參數,

讓標籤可以用版本的方式排序,這樣像 1.19 才會排在 1.2 的後面~

 

來看看執行的樣子吧~

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$ 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
$ 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
$ 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

(本頁面已被瀏覽過 82 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料