最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

最近的工作中,需要批量處理harbor中的一些鏡像,其中關(guān)鍵的一步就是獲取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é)果如下:

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

相關(guān)文章

  • 一步步教你用docker部署postgreSQL數(shù)據(jù)庫

    一步步教你用docker部署postgreSQL數(shù)據(jù)庫

    這篇文章主要給大家介紹了關(guān)于如何使用docker部署postgreSQL數(shù)據(jù)庫的相關(guān)資料,PostgreSQL是一款功能豐富的關(guān)系型數(shù)據(jù)庫,類似于MySQL,它也是受歡迎程度非常高的,需要的朋友可以參考下
    2023-11-11
  • linux下如何使用docker安裝minio

    linux下如何使用docker安裝minio

    這篇文章主要介紹了linux下如何使用docker安裝minio問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • IDEA集成Docker實現(xiàn)一鍵部署的詳細過程

    IDEA集成Docker實現(xiàn)一鍵部署的詳細過程

    這篇文章主要介紹了IDEA集成Docker實現(xiàn)一鍵部署,Docker基于Windows集成IDEA,本文分步驟通過圖文實例代碼相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • mac docker如何修改daemon.json文件

    mac docker如何修改daemon.json文件

    這篇文章主要介紹了mac docker如何修改daemon.json文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 如何在 Ubuntu 下通過 Docker 部署 Caddy 服務(wù)器

    如何在 Ubuntu 下通過 Docker 部署 Caddy 

    本文介紹了如何在Ubuntu系統(tǒng)下通過Docker部署Caddy服務(wù)器,首先安裝Docker,然后啟動Docker服務(wù)并設(shè)置為開機自啟,接著拉取Caddy鏡像,并創(chuàng)建一個Caddyfile配置文件,使用命令運行Caddy容器,并將本地的Caddyfile掛載到容器內(nèi),感興趣的朋友跟隨小編一起看看吧
    2025-03-03
  • 在Docker中如何配置網(wǎng)絡(luò)并訪問互聯(lián)網(wǎng)

    在Docker中如何配置網(wǎng)絡(luò)并訪問互聯(lián)網(wǎng)

    這篇文章主要介紹了在Docker中如何配置網(wǎng)絡(luò)并訪問互聯(lián)網(wǎng)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker?安裝Nginx與配置Nginx的案例

    Docker?安裝Nginx與配置Nginx的案例

    Nginx是一個高性能的HTTP和反向代理web服務(wù)器,ginx是一款輕量級的Web?服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,在BSD-like?協(xié)議下發(fā)行,下面通過本文給大家介紹Docker?安裝Nginx與配置Nginx的案例,感興趣的朋友一起看看吧
    2024-08-08
  • 清理docker磁盤空間的方法總結(jié)(附詳細講解)

    清理docker磁盤空間的方法總結(jié)(附詳細講解)

    docker?鏡像特別容易占空間,稍微不注意可能磁盤爆滿,所以本文給大家詳細介紹了如何清理?docker?磁盤空間,并通過代碼示例給大家講解的非常詳細,需要的朋友可以參考下
    2024-02-02
  • docker容器中切換用戶,提示權(quán)限不足的解決

    docker容器中切換用戶,提示權(quán)限不足的解決

    這篇文章主要介紹了docker容器中切換用戶,提示權(quán)限不足的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 騰訊云服務(wù)器docker開啟端口后無法訪問的解決方法

    騰訊云服務(wù)器docker開啟端口后無法訪問的解決方法

    本文主要介紹了騰訊云服務(wù)器docker開啟端口后無法訪問的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評論

龙川县| 留坝县| 凤翔县| 渝中区| 修文县| 汝城县| 临猗县| 那坡县| 阿尔山市| 永嘉县| 南木林县| 榆中县| 乌兰浩特市| 会东县| 张北县| 丰宁| 永安市| 县级市| 年辖:市辖区| 通许县| 阳东县| 沅江市| 雷山县| 乌兰县| 高雄市| 行唐县| 怀远县| 宝应县| 常州市| 长岭县| 四子王旗| 阳信县| 保靖县| 沂水县| 陈巴尔虎旗| 岑溪市| 渑池县| 太原市| 河北区| 阿克陶县| 淳化县|