获取harbor某个项目下所有镜像及 ID

这篇具有很好参考价值的文章主要介绍了获取harbor某个项目下所有镜像及 ID。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

需求:把harbor某个仓库组下的所有镜像名字及镜像ID收集出来;
镜像仓库为使用Docker-compose快速部署。
注意:所收集到的镜像有多个tag的话,脚本是根据tag的创建时间,取最新的tag。

于是编写如下脚本:

#!/bin/bash
#
read -p "Please enter the password of harbor: " -s PASSWD
# Note: please modify the harbor address, user name
# eg:HARBOR= http://hubIP
HARBOR=
USER=
#

# Convert to requirement format
AUTH=$(echo $USER:$PASSWD| base64)
#
# Get project
# PROJECT=$(curl -H"Authorization: Basic $AUTH" $HARBOR/api/projects? | awk '/"name": /'|awk -F "\"" '{print $4}')

curl -H"Authorization: Basic $AUTH" $HARBOR/api/projects?
if [ $? -ne 0 ];then
   echo "Please enter the correct user name and password"
   exit 100
fi
#
# Get all image, no tag, only name
IMAGE_RANG=$(curl -H"Authorization: Basic $AUTH"  $HARBOR/api/search?q=system_containers | grep "repository_name" |awk -F "\"" '{print $4}')

# Make sure the file that stores the image is new
workdir=$(cd $(dirname $0); pwd)
if [ -f $workdir/a.tst ];then
    mv $workdir/a.tst $(date +%Y%m%d%H%M%S).a.tst.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 -H"Authorization: Basic $AUTH" $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 -H"Authorization: Basic $AUTH" $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 -H"Authorization: Basic $AUTH" $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})
        # 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.tst
     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.tst >${IMAGE_FILE}

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

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

修改完成后,保存退出,并进行执行,执行完成后,会在当前目录生成一个以当前时间命名的文件,文章来源地址https://www.toymoban.com/news/detail-577814.html

到了这里,关于获取harbor某个项目下所有镜像及 ID的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java获取某个文件夹下的所有文件

    目录 一.前言 二.获取文件夹下的文件路径 在我们平时编写开发文档的时候, 我们会获取到项目文件中的所有子文件来展示我们的源代码所储存的位置, 获取我们项目下的所有文件路径,  这时我们会如何用Java代码来获取我们项目下的所有文件呢, 今天我们来比编写一下代码 在

    2024年02月12日
    浏览(87)
  • selenium元素定位,获取某个元素下的所有元素

    例: 想要获取所有的li元素: 结果如下 获取到元素后可以直接进行操作: list_tab[2].click() list_tab[5].send_keys(‘123456’)

    2024年02月16日
    浏览(44)
  • 获取FTP服务器某个目录下的所有文件列表

    最近的一个需求为扫描FTP文件夹下的所有文件用于前端下载, 要求多层文件夹内的文件也能被扫到. 多层文件夹一般就要用到递归了, 上代码:  调用该方法: 调用完后, fileList中就有指定目录下的所有文件名  依赖: 定时调用逻辑使用的是PowerJob, 嫌麻烦可以直接使用spring自带的

    2024年02月13日
    浏览(53)
  • js递归遍历树形结构数据,获取所有数组id集合

    实现思路 可以使用递归遍历整个树形数组,将每个节点的id加入到一个数组中,最后返回这个数组即可。 数据准备 代码实现 方式一 获取结果 方式二 获取结果 方式三 获取结果 方法总结 这里的tree是树形数组,result是用来保存所有id的数组。 首先遍历当前层级的每个节点,

    2024年02月11日
    浏览(52)
  • el-tree获取当前选中节点及其所有父节点的id(包含半选中父节点的id)

    如下图,我们现在全勾中的有表格管理及其下的子级,而半勾中的有工作台和任务管理及其子级 现在点击保存按钮后,需要将勾中的节点id及该节点对应的父节点,祖先节点的id(包含半选中父节点的id)也都一并传给后端,那这个例子里就应该共传入9个id,我们可以直接将

    2024年01月22日
    浏览(53)
  • docker 获取镜像源中指定镜像的所有 tag

    参考网址:https://www.yuque.com/jiangshuangjun-upt1l/xve9g7/bn13gw 稍加改进的脚本:(软件源在代码中设置,镜像名是脚本后跟的参数) 使用方法: 安装 docker 安装脚本必要的依赖 jq 在脚本中配置要使用的软件源(注释/取消注释 repo_url ,只能从一个软件源查询) 运行脚本,脚本后加

    2024年02月11日
    浏览(38)
  • 获取该虚拟机的所有权失败,主机上的某个应用程序正在使用该虚拟机

    点击“openstack-controller”虚机   打开出现如下错误,点击“获取所有权”  点击“取消” 这时候不要删除虚拟机,这种错误一般是由于虚拟机没有正常关闭引起的。  找到openstack-controller的虚拟磁盘文件及配置文件存放的位置,删除openstack-controller.vmx.lck目录 根据提示我们找

    2024年02月09日
    浏览(42)
  • kafka 基础概念、命令行操作(查看所有topic、创建topic、删除topic、查看某个Topic的详情、修改分区数、发送消息、消费消息、 查看消费者组 、更新消费者的偏移位置)

    kafka官网 Broker   一台kafka服务器就是一个broker,可容纳多个topic。一个集群由多个broker组成; Producer   生产者,即向kafka的broker-list发送消息的客户端; Consumer   消费者,即向kafka的broker-list订阅消息的客户端; Consumer Group   消费者组是 逻辑上的一个订阅者 ,由多个

    2024年02月01日
    浏览(61)
  • k8s查看所有在运行pod内的镜像版本

    本地跑的算法镜像有时候与线上跑的环境不一致,这时候又需要同步,每一个都去查找又很麻烦 这时候查看两边的镜像,选取其中不同的地方edit一下,就方便多了 名称空间更改为自己的名称空间 查询镜像并去重,有名称空间的  记得把名称空间加上  同时显示pod名称和镜像

    2024年02月12日
    浏览(71)
  • k8s查看当前命名空间下所有运行的 pod 对应的镜像

    1,查看镜像 2,去重查看 3, 同时显示pod名称和镜像 4,查看所有deployment和其中的镜像

    2024年02月02日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包