教你如何获取Harbor的带tag的镜像清单

 更新时间:2022年04月08日 15:02:34   作者:农民工老王  
这篇文章主要介绍了如何利用Java语言实现获取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镜像清单内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一步步教你用docker部署postgreSQL数据库

    一步步教你用docker部署postgreSQL数据库

    这篇文章主要给大家介绍了关于如何使用docker部署postgreSQL数据库的相关资料,PostgreSQL是一款功能丰富的关系型数据库,类似于MySQL,它也是受欢迎程度非常高的,需要的朋友可以参考下
    2023-11-11
  • linux下如何使用docker安装minio

    linux下如何使用docker安装minio

    这篇文章主要介绍了linux下如何使用docker安装minio问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04
  • IDEA集成Docker实现一键部署的详细过程

    IDEA集成Docker实现一键部署的详细过程

    这篇文章主要介绍了IDEA集成Docker实现一键部署,Docker基于Windows集成IDEA,本文分步骤通过图文实例代码相结合给大家介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • mac docker如何修改daemon.json文件

    mac docker如何修改daemon.json文件

    这篇文章主要介绍了mac docker如何修改daemon.json文件问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 如何在 Ubuntu 下通过 Docker 部署 Caddy 服务器

    如何在 Ubuntu 下通过 Docker 部署 Caddy 

    本文介绍了如何在Ubuntu系统下通过Docker部署Caddy服务器,首先安装Docker,然后启动Docker服务并设置为开机自启,接着拉取Caddy镜像,并创建一个Caddyfile配置文件,使用命令运行Caddy容器,并将本地的Caddyfile挂载到容器内,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • 在Docker中如何配置网络并访问互联网

    在Docker中如何配置网络并访问互联网

    这篇文章主要介绍了在Docker中如何配置网络并访问互联网问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Docker 安装Nginx与配置Nginx的案例

    Docker 安装Nginx与配置Nginx的案例

    Nginx是一个高性能的HTTP和反向代理web服务器,ginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行,下面通过本文给大家介绍Docker 安装Nginx与配置Nginx的案例,感兴趣的朋友一起看看吧
    2024-08-08
  • 清理docker磁盘空间的方法总结(附详细讲解)

    清理docker磁盘空间的方法总结(附详细讲解)

    docker 镜像特别容易占空间,稍微不注意可能磁盘爆满,所以本文给大家详细介绍了如何清理 docker 磁盘空间,并通过代码示例给大家讲解的非常详细,需要的朋友可以参考下
    2024-02-02
  • docker容器中切换用户,提示权限不足的解决

    docker容器中切换用户,提示权限不足的解决

    这篇文章主要介绍了docker容器中切换用户,提示权限不足的解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • 腾讯云服务器docker开启端口后无法访问的解决方法

    腾讯云服务器docker开启端口后无法访问的解决方法

    本文主要介绍了腾讯云服务器docker开启端口后无法访问的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06

最新评论