[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 裡,某個映像檔的所有標籤:

#!/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

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

發佈留言

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

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