获取harbor某个项目的所有镜像名称和所有的标签

获取对应项目的所有镜像和标签

#!/bin/bash
# 获取harbor某个项目的所有镜像名称和所有的标签
# harbor版本v1.7.5-a8f6543a
# 时间:20230407
# 适合无密码配置的情况,有密码的情况可网上搜索修改。

#仓库url;如:https://harbor.com:443/
HARBOR='待补充'
#目录
workdir='.'
#项目名称
project='待补充'



IMAGE_RANG=$(curl -k  $HARBOR/api/search?q=${project} | grep "repository_name" |awk -F "\"" '{print $4}')

# Make sure the file that stores the image is new

if [ -f $workdir/a.txt ];then
    mv $workdir/a.txt $(date +%Y%m%d%H%M%S).a.txt.bak
fi

# Get the latest tag and ID for all images
for i in ${IMAGE_RANG};do
    # Get the creation time of the latest image
    #NEW_TAG_TIME=$(curl  $HARBOR/api/repositories/$i/tags|awk '/"created"/'|sort -k 2| tail -n 1|awk -F '"' '{print $4}')
    
    # Get the latest tag of the image
    # NEW_TAG=$(curl $HARBOR/api/repositories/$i/tags |grep -B 7 "${NEW_TAG_TIME}" |awk '/"name": /' | awk -F '"' '{print $4}')
	NEW_TAG=$(curl -k $HARBOR/api/repositories/$i/tags |grep -B 7 "${NEW_TAG_TIME}" |awk '/"name": /' | awk -F '"' '{print $4}')
    
    # Because there may be multiple tags for the same image, you need to use the for loop
    for h in ${NEW_TAG};do
        #Image, Image name and tag
        IMAGE=$(echo $i:$h)
        # Get image ID, 
        IMAGE_ID=$(curl -k $HARBOR/api/repositories/$i/tags/$h/manifest | grep -A 7 manifest | grep digest | awk -F : '{print $3}')
        # Intercepts the first 12 bits of the image ID
        IMAGE_ID_NEW=$(echo ${IMAGE_ID:0:12})
		if [ ${#IMAGE_ID} -eq 0 ];then continue ;fi
        # Merge the image name and ID into one line
        ID_IMAGE=$(echo $IMAGE  $IMAGE_ID_NEW)

        # Load the image name into a new file
        echo ${ID_IMAGE} >>a.txt
     done
done

#
# Format file content
IMAGE_FILE=`date +%Y%m%d%H%M%S.harbor_image.txt`
awk '{printf "%-60s %70s\n",$1,$2}' $workdir/a.txt >${IMAGE_FILE}

if [ $? -eq 0 ];then
    rm -rf  $workdir/a.txt
fi

echo "Please check the ${IMAGE_FILE} file."

推送到新的镜像仓库

#!/bin/bash
cat 输出的镜像清单.txt  | awk '{print $1}' | while read line ;do
    echo "docker pull 原镜像仓库/${line}" >> c.txt 
    echo "docker tag 原镜像仓库/${line} 目的镜像仓库/${line}" >> c.txt 
    echo "docker push 目的镜像仓库/${line} " >> c.txt 
    echo "docker rmi 原镜像仓库/${line} " >> c.txt 
    echo "docker rmi 目的镜像仓库/${line}" >> c.txt
    echo "sleep 2" >> c.txt  # 非紧急情况下每个循环稍稍sleep一下,减轻服务器的压力
done
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值