欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

教你如何獲取Harbor的帶tag的鏡像清單

 更新時間:2022年04月08日 15:02:34   作者:農(nóng)民工老王  
這篇文章主要介紹了如何利用Java語言實現(xiàn)獲取harbor中全部鏡像的帶tag的清單,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下

最近的工作中,需要批量處理harbor中的一些鏡像,其中關鍵的一步就是獲取harbor中全部鏡像的帶tag的清單。我在網(wǎng)上找了許久,沒有找到可用的。

最后我自己寫了一個java方法,成功實現(xiàn)了這一需求。

本文測試的harbor的版本是V2.3.3。

下列代碼中,使用了一個叫HttpUtils.sendGet的方法。這是我自己實現(xiàn)的一個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);
        }
    }
}

此方法需要傳入兩個參數(shù)。第一個是:harborHost為harbor的URL的字符串,比如:https://harbor.wja.cn
第二個也是一個字符串,需要手動登錄harbor頁面,在首頁中,按F12,彈出開發(fā)工具,然后刷新頁面,第一個請求的cookie的值就所需的字符串,如下圖所示:

測試結(jié)果如下:

到此這篇關于教你如何獲取Harbor的帶tag的鏡像清單的文章就介紹到這了,更多相關獲取Harbor鏡像清單內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • docker服務關停的實現(xiàn)步驟

    docker服務關停的實現(xiàn)步驟

    在我看來所謂的優(yōu)雅關閉,就是在系統(tǒng)關閉時,預留一些時間,讓你有機會來善后一些事情,本文就來介紹一下docker服務如何正確關停,感興趣的可以了解一下
    2023-10-10
  • Ubuntu 16.04安裝使用Docker教程

    Ubuntu 16.04安裝使用Docker教程

    本篇文章主要介紹了Ubuntu 16.04安裝使用Docker教程,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 使用Docker compose啟動自定義jar包的步驟詳解

    使用Docker compose啟動自定義jar包的步驟詳解

    這篇文章主要介紹了使用Docker compose啟動自定義jar包的步驟,首先我們需要編寫一個docker-compose.yml文件來定義我們的服務傳到我們的云服務器上,本文給大家分享示例代碼,感興趣的朋友一起看看吧
    2024-03-03
  • docker中修改鏡像容器的存放目錄的方法

    docker中修改鏡像容器的存放目錄的方法

    本篇文章主要介紹了docker中修改鏡像容器的存放目錄的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • docker容器中切換用戶,提示權限不足的解決

    docker容器中切換用戶,提示權限不足的解決

    這篇文章主要介紹了docker容器中切換用戶,提示權限不足的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Docker中搭建FastDFS文件系統(tǒng)(多圖教程)

    Docker中搭建FastDFS文件系統(tǒng)(多圖教程)

    這篇文章主要介紹了Docker中搭建FastDFS文件系統(tǒng)(多圖教程),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Docker下Redis集群(主從+哨兵)安裝配置的實現(xiàn)步驟

    Docker下Redis集群(主從+哨兵)安裝配置的實現(xiàn)步驟

    本文主要介紹了Docker下Redis集群(主從+哨兵)安裝配置的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>
    2022-07-07
  • spring-boot構(gòu)建docker鏡像上傳倉庫的示例教程

    spring-boot構(gòu)建docker鏡像上傳倉庫的示例教程

    這篇文章主要介紹了spring-boot構(gòu)建docker鏡像上傳倉庫,受限創(chuàng)建一個簡單spring-boot-web項目,查看鏡像上傳倉庫這時候有兩種解決方案,對docker鏡像上傳倉庫相關知識感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 編寫最佳的Dockerfile的方法

    編寫最佳的Dockerfile的方法

    本文給大家分享的是如何編寫最佳的dockerfile的方法,通過具體實例幫助大家快速掌握編寫Dockerfile的技巧
    2017-06-06
  • docker和docker-compose一鍵安裝教程(支持在線和離線)

    docker和docker-compose一鍵安裝教程(支持在線和離線)

    這篇文章主要介紹了docker和docker-compose一鍵安裝(支持在線和離線),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12

最新評論