前言
我們都知道可以通過接口來獲取鏡像的信息,但是格式方面比較麻煩,如果要直接pull某個鏡像還得對命令進行拼接。下面分享的是通過命令行獲取harbor鏡像列表。
如果獲取不了信息或無法拉取鏡像,建議從下方查找問題:
與harbor的網絡聯通
hurbor域名是否綁定
賬號或密碼是否正確
docker 的daemon.json文件中insecure-registries是否配置正確
#!/bin/bash
#查看hurbor可提供鏡像
USER="admin" #填入賬號
PASS="23fn@!#ffd" #填入密碼
TOU="harbor.com" #填入訪問網址或ip
HURL="https://$TOU" #此腳本是https協議的,可修改爲http
token=$(curl -k -s -u ${USER}:${PASS} ${HURL}/service/token?account=${USER}\&service=harbor-registry\&scope=registry:catalog:*|grep "token" |awk -F '"' '{print $4}')
image_list=$(curl -k -s -H "authorization: bearer $token " ${HURL}/v2/_catalog|awk -F '[' '{print $2}'|awk -F ']' '{print $1}'|sed 's/"//g')
echo $image_list |sed 's/,/\n/g' > images_list.txt
> hub_images_list.txt
for i in `cat images_list.txt`
do
tag_token=$(curl -iksL -X GET -u $USER:$PASS $HURL/service/token?account=${USER}\&service=harbor-registry\&scope=repository:${i}:pull|grep "token" |awk -F '"' '{print $4}')
tag_list=$(curl -ksL -X GET -H "Content-Type: application/json" -H "Authorization: Bearer $tag_token" ${HURL}/v2/${i}/tags/list|awk -F '[' '{print $2}'|awk -F ']' '{print $1}'|sed 's/"//g')
echo $tag_list |sed 's/,/\n/g' > hub_tag.txt
for tag in `cat hub_tag.txt`
do
echo "$TOU/$i:$tag" >> hub_images_list.txt
done
done
rm -rf images_list.txt
rm -rf hub_tag.txt
效果(不方便截圖,瞭解即可):
cat hub_images_list.txt
harbor.com/library/calico-cni:v3.1.6
這樣就方便使用pull拉取鏡像了