前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一键查询Harbor仓库中所有镜像及版本号

一键查询Harbor仓库中所有镜像及版本号

作者头像
运维搬砖
发布2023-09-27 10:33:41
3780
发布2023-09-27 10:33:41
举报
文章被收录于专栏:LeorizonLeorizon

Harbor作为一个开源的用于存储和分发容器镜像的企业级Registry服务器(企业级容器镜像仓库),提供了强大的容器镜像管理功能,支持多Harbor仓库进行复制和同步,还能通过集成第三方工具进行容器镜像分布式预发布,是企业自建私有容器镜像仓库的不二选择。

随着企业项目的变化,代码工程的变多,Harbor仓库中的容器镜像库也越来越多,某天领导说让统计一下公司Harbor仓库中都有哪些镜像仓库,对于没有用仓库需要删除掉,释放服务器的存储资源。接到任务的大胖兴匆匆的登录了Harbor仓库的WEB页面进行统计,但是很快大胖就麻瓜了,公司的Harbor根据每个项目都创建应用的项目仓库,每一个项目中的仓库有多有少,多的好几十个镜像库,领导还要统计版本号,这下大胖彻底崩溃了。这时路过的老李问大胖为啥一脸的生无可恋的模样,得知原委后,老李拍拍大胖的肩膀说给我半小时,半小时后老李给大胖发来了一个Shell脚本,然后告诉大胖这样、这样、再这样,然后回车执行,大胖看着控制台输出的镜像库完整地址流下了激动的泪水,又可以摸鱼一整天了。

废话不多说,大胖这就把老李的脚本交给大家

代码语言:shell
复制
#!/bin/bash

# 使用时需先改以下3个变量参数,如果Harbor未启用https,需要去除curl中的-k参数
HARBOR_URL="https://10.x.x.x"
USERNAME="xxx"
PASSWORD="xxx"

# API endpoint to get all images
imges_head=$(echo "$HARBOR_URL"|awk -F // '{print $2}' )
projects_endpoint="$HARBOR_URL/api/v2.0/projects"
projects=$(curl -u $USERNAME:$PASSWORD -skX 'GET' $projects_endpoint |jq -r '.[].name')
for project in $projects;do
    
    repo_count_endpoint="$HARBOR_URL/api/v2.0/projects?name=$project"
    repo_count=$(curl -u $USERNAME:$PASSWORD -skX 'GET' $repo_count_endpoint |jq -r '.[].repo_count')
    pages=$(expr $repo_count / 10 + 1)
    for ((i=1;i<=$pages;i++));do
        
        images_endpoint="$HARBOR_URL/api/v2.0/projects/$project/repositories?page_size=10&page=$i"
        repos=$(curl -u $USERNAME:$PASSWORD -skX 'GET' $images_endpoint | jq -r '.[].name' |awk -F / '{print $2}')

        for repo in $repos;do
            tag_count_url="$HARBOR_URL/api/v2.0/projects/$project/repositories/$repo"
            tag_count=$(curl -u $USERNAME:$PASSWORD -skX 'GET' $tag_count_url |jq '.artifact_count')
            pages1=$(expr $tag_count / 10 + 1)
            for ((j=1;j<=$pages1;j++));do

                tags_endpoint="$HARBOR_URL/api/v2.0/projects/$project/repositories/$repo/artifacts?page_size=10&page=$j"
                tags=$(curl -u $USERNAME:$PASSWORD -skX 'GET' $tags_endpoint |jq -r '.[].tags' |jq -r '.[].name')
                for tag in $tags;do 
                    echo "$imges_head/$project/$repo:$tag"
                done
            done
        done    
    done
done

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档