教你如何获取Harbor的带tag的镜像清单
最近的工作中,需要批量处理harbor中的一些镜像,其中关键的一步就是获取harbor中全部镜像的带tag的清单。我在网上找了许久,没有找到可用的。
最后我自己写了一个java方法,成功实现了这一需求。
本文测试的harbor的版本是V2.3.3。
下列代码中,使用了一个叫HttpUtils.sendGet的方法。这是我自己实现的一个HTTP请求工具。其代码参见:Java原生HttpClient使用示例。
public void getImages(String harborHost, String cookieStr) throws Exception {
HttpResponse catalogResp = HttpUtils.sendGet(harborHost + "/v2/_catalog", cookieStr);
List strings = JSONObject.parseObject(catalogResp.body()).getJSONArray("repositories").toJavaList(String.class);
HashMap> result = new HashMap<>();
for (String image : strings) {
ArrayList tagList = new ArrayList<>();
String[] split = image.split("/");
String repositoryName = split[0];
String imageName = split[1];
String urlForImageInfo = harborHost + "/api/v2.0/projects/" + repositoryName + "/repositories/" + imageName;
HttpResponse infoResp = HttpUtils.sendGet(urlForImageInfo, cookieStr);
Integer artifactCount = JSONObject.parseObject(infoResp.body()).getInteger("artifact_count");
int pageNum = artifactCount / 15;
pageNum = pageNum * 15 >= artifactCount ? pageNum : pageNum + 1;
for (int i = 1; i <= pageNum; i++) {
String urlForTags = urlForImageInfo + "/artifacts?with_tag=true&with_scan_overview=true&with_label=true&page_size=15&page=" + i;
HttpResponse tagsResp = HttpUtils.sendGet(urlForTags, cookieStr);
JSONArray tagArray = JSONObject.parseArray(tagsResp.body());
for (int j = 0; j < tagArray.size(); j++) {
String tagsStr = tagArray.getJSONObject(j).getString("tags");
if (!StrUtils.isEmpty(tagsStr)) {
JSONArray tags = tagArray.getJSONObject(j).getJSONArray("tags");
for (int k = 0; k < tags.size(); k++) {
tagList.add(tags.getJSONObject(k).getString("name"));
}
}
}
}
result.put(image, tagList);
}
for (String key : result.keySet()) {
for (String t : result.get(key)) {
System.out.println(key + ":" + t);
}
}
}
此方法需要传入两个参数。第一个是:harborHost为harbor的URL的字符串,比如:https://harbor.wja.cn
第二个也是一个字符串,需要手动登录harbor页面,在首页中,按F12,弹出开发工具,然后刷新页面,第一个请求的cookie的值就所需的字符串,如下图所示:

测试结果如下:

上一篇:docker从安装入门到应用部署及私有仓库搭建基础命令
栏 目:其它服务器
下一篇:Docker执行DockerFile构建过程指令解析
本文地址:https://zz.feitang.co/server/32376.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





