小知识:教你如何获取Harbor的带tag的镜像清单

最近的工作中,需要批量处理harbor中的一些镜像,其中关键的一步就是获取harbor中全部镜像的带tag的清单。我在网上找了许久,没有找到可用的。

最后我自己写了一个java方法,成功实现了这一需求。

本文测试的harbor的版本是V2.3.3。

下列代码中,使用了一个叫HttpUtils.sendGet的方法。这是我自己实现的一个HTTP请求工具。其代码参见:Java原生HttpClient使用示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public void getImages(String harborHost, String cookieStr) throws Exception {
HttpResponse<String> catalogResp = HttpUtils.sendGet(harborHost + “/v2/_catalog”, cookieStr);
List<String> strings = JSONObject.parseObject(catalogResp.body()).getJSONArray(“repositories”).toJavaList(String.class);
HashMap<String, List<String>> result = new HashMap<>();
for (String image : strings) {
ArrayList<String> 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<String> 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<String> 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的值就所需的字符串,如下图所示:

%小知识:教你如何获取Harbor的带tag的镜像清单-猿站网-插图

测试结果如下:

%小知识:教你如何获取Harbor的带tag的镜像清单-1猿站网-插图

到此这篇关于教你如何获取Harbor的带tag的镜像清单的文章就介绍到这了,更多相关获取Harbor镜像清单内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://tomcat.blog.csdn.net/article/details/123833300

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:新加坡vps和新加坡云服务器有什么区别

2023-3-8 11:09:44

建站知识

小知识:基于docker部署Oracle 19c的详细记录

2023-3-8 11:24:23

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索