【摘要】
一键获取Harbor中的镜像列表,无需登录harbor UI,也可批量下载镜像到本地并保存为tar包。
本文已参与「开源摘星计划」,欢迎正在阅读的你加入。
活动链接: https://github.com/weopenprojects/WeOpen-Star
前言
我们要查询Harbor中某个项目下某个镜像是否存在,需要登录Harbor UI管理界面,然后进入到项目(Project),再到搜索框输入镜像的名称来查找镜像在不在。
那么,如果只知道镜像的名称,不知道镜像在哪个项目(Project)呢?你是每个项目下都去搜索么?
那么!有什么方法可以简化这些操作呢?即:
- 不需要登录Harbor就可以看到Harbor里面所有的镜像;
- 仅提供镜像名称就可以看到镜像在哪个项目;
- 仅知道镜像名称就可以判断Harbor镜像仓库中是否存在这个镜像,从而判断上传的镜像是否上传成功。
我在工作中常遇到开发的同事的问题:
- 我上传一个镜像,帮忙看上传成功没?
- 我刚发布一个服务,构建的时候报错一直找不到镜像,这是什么原因?
- 我之前上传好几个版本的镜像,怎么知道都有哪些?
命令行获取Harbor镜像清单
在Harbor服务主机上,可通过如下命令在 registry 存储目录下获取镜像列表:
Shell脚本获取Harbor中所有的镜像列表
前面在harbor服务主机命令行实现了harbor镜像清单列表的获取。
那么,如果不是在Harbor服务主机上又该如何获取呢?
通过调用Harbor API,先获取所有项目(Projects),然后循环获取每个项目下的镜像名称,再循环获取某个镜像的所有tag版本,最后以指定的格式输出到一个镜像清单文件中。
而Harbor的API有两个版本(v1、v2), 每个版本的API调用方法都不一样。
3.1 查看API版本
3.2 Harbor V1 API的shell脚本
然后可以打开$File中的文件查看镜像清单了!
3.3 Harbor API v2版本的Shell脚本实现
基于镜像清单将Harbor中的镜像制作成tar包
前面通过shell脚本获取harbor中的镜像列表,并以
harbor地址:服务端口/项目名称/镜像名称:tag
的格式输出到文件中。
接下来可根据该文件批量pull镜像到本地,然后制作成tar包。
4.1 编写shell脚本
【原创声明】
本文为作者原创,正逐个迁移至微信公众号《Harbor进阶实战》。