docker registry v2 API的使用

1.查詢鏡像是否存在以及標籤列表  

方法:GET  /v2/<name>/tags/list

(1)對用戶名和密碼,進行base64編碼,在終端輸入下面命令,得到token。

格式:echo -n "用戶名:密碼" | base64

(2)攜帶token發起請求,把(1)得到的token填入下列位置。

格式:curl -v -H "Authorization: Basic "token" -X GET https://docker.yun.ccb.com/v2/name/tags/list

注:(1)(2)步驟也可以合寫爲:

curl -v -H "Authorization: Basic $(echo -n "用戶名:密碼" | base64)" -X GET https://docker.yun.ccb.com/v2/name/tags/list

(3)得到返回結果,如果鏡像存在,則返回鏡像列表

(4)如果鏡像不存在,則返回空列表

2.列出所有鏡像列表

方法:GET  /v2/_catalog

(1)請求url "https://docker.yun.ccb.com/v2/_catalog",獲取所有鏡像列表。

格式:

curl -v -H "Authorization: Basic $(echo -n "用戶名:密碼" | base64)" -X GET https://docker.yun.ccb.com/v2/_catalog

得到返回列表信息

3.獲取鏡像名和引用標識的清單

方法:GET  /v2/<name>/manifests/<reference>

(1)上傳鏡像,獲取該鏡像的digest

也可以執行docker images --digests命令,複製已上傳成功鏡像的digest

(2)執行下列命令,獲取清單

格式:

curl -v -H "Authorization: Basic $(echo -n "用戶名:密碼" | base64)" -X GET https://docker.yun.ccb.com/v2/name/manifests/digest

可以看到返回的數據信息

4.刪除鏡像

方法:DELETE  /v2/<name>/manifests/<reference>

(1)執行"docker images --digests"命令,複製所要刪除鏡像的digest

(2)執行下列命令,獲取清單

格式:

curl -v -H "Authorization: Basic token" -X DELETE https://doceker.yun.ccb.com/v2/name/manifests/digest

(3)得到返回結果

附件:python  RESTFUL請求方式

import requests


class conn_dockerregistry():
    def __init__(self):
        self.headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
        "Authorization": "Basic MTAwMDAxxxxxxxxxxxxxxxWluZzpLYW5nNjUzNDU2"}

    #查詢操作
    def get_images(self):
        # 1.獲取2048鏡像的標籤列表
        # url = 'https://docker.yun.ccb.com/v2/public/2048/tags/list'
        # 2.獲取所有鏡像列表
        # url = 'https://docker.yun.ccb.com/v2/_catalog'
        # 3.獲取ubuntu引用標識digest的清單
        url = 'https://docker.yun.ccb.com/v2/10000460xxxx-xxxx/ubuntu/manifests/sha256:acd85db6e4b18aafxxxxxxxxxxxxd8e6c09acc06a8b78'
        # 4.刪除鏡像
        # url = 'https://docker.yun.ccb.com/v2/10000460xxxx-xxxx/ubuntu/manifests/sha256:acd85db6e4bxxxxxxxxxxxbd4e5e790ecc09acc06a8b78'
        r = requests.get(url=url,headers=self.headers)
        print(r.status_code)
        print(r.text)
        # print(r.json())


    # 運行
    def run(self):
        fd = conn_dockerregistry.get_images()


if __name__ == '__main__':
    conn_dockerregistry = conn_dockerregistry()
    conn_dockerregistry.run()






docker官方文檔鏈接:https://docs.docker.com/registry/spec/api/#listing-repositories

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章