教你如何获取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<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镜像清单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
使用minikube安装使用单机版K8S方式(docker)
本文介绍了如何在centos7上使用minikube快速搭建单机版k8s,主要步骤包括:下载kubectl和docker,创建新用户,下载和安装minikube,验证安装情况,最后,通过执行minikube和minikubestop启停K8s,或使用minikubedelete彻底删除K8S的数据2024-10-10使用Docker compose启动自定义jar包的步骤详解
这篇文章主要介绍了使用Docker compose启动自定义jar包的步骤,首先我们需要编写一个docker-compose.yml文件来定义我们的服务传到我们的云服务器上,本文给大家分享示例代码,感兴趣的朋友一起看看吧2024-03-03Docker+keepalived+nginx实现主从热备的方法示例
这篇文章主要介绍了Docker+keepalived+nginx实现主从热备的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-11-11
最新评论