1. 程式人生 > >docker registry v2 API的使用

docker registry v2 API的使用

1.獲取使用者認證資訊

對使用者名稱和密碼,進行base64編碼。

格式:echo -n "使用者名稱:密碼" | base64

執行命令,得到認證資訊。

2.查詢映象是否存在以及標籤列表

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

其中<name>為映象名

(1)攜帶認證資訊發起請求

格式:curl -v -H "Authorization: Basic 認證資訊" -X GET https://docker.yun.ccb.com/v2/<name>/tags/list

執行命令,圖例表示獲取2048映象的標籤列表

(2)得到返回結果,如果映象存在,則返回映象列表

(3)如果映象不存在,則返回空列表

3.列出所有映象列表

方法:GET  /v2/_catalog

(1)請求api,獲取所有映象列表

格式:

curl -v -H "Authorization: Basic 認證資訊" -X GET https://docker.yun.ccb.com/v2/_catalog

執行命令:

(2)得到返回列表資訊

4.獲取映象資訊

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

其中<name>為映象名,<reference>可以是"tag"或"digest",本小節用python程式碼演示。

(1)得到返回列表資訊把使用者認證資訊填入程式碼的請求頭

(2)得到返回列表資訊請求url, 獲取映象資訊

格式:

url = "https://docker.yun.ccb.com/v2/<name>/manifests/<tag>"

執行命令,圖例表示獲取ubuntu:latest的映象資訊

(3)得到返回列表息得到返回資訊,如下圖顯示:

 

5.刪除映象

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

其中<name>為映象名,<reference>只能是"digest"

(1)填入認證資訊、"name"和"digest",刪除映象。"digest"資訊可由4.或6.得到。

格式:

curl -v -H "Authorization: Basic 認證資訊" -X DELETE https://doceker.yun.ccb.com/v2/<name>/manifests/<digest>

執行命令,圖例表示刪除ubuntu映象

(2)得到返回結果,刪除成功

6.檢視本地映象的digest方法

(1)外網上傳映象,獲取該映象的digest

格式:

sudo docker push docker.yun.ccb.com/<name>:<tag>

執行命令,圖例顯示獲取ubuntu:latest的digest

(2)也可以通過"docker images --digests"命令,獲取digest

執行命令,找到<name>:<tag>對應的digest

附錄:

程式碼演示

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 MTAwMDA0NjAXXXXXXXXXvbWluZzpLYW5nNjUzNDU2"}

    #查詢操作
    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:lstest的資訊
        url = 'https://docker.yun.ccb.com/v2/10000460xxxxx/ubuntu/manifests/latest'
        # 4.刪除ubuntu映象
        # url = 'https://docker.yun.ccb.com/v2/10000460xxxxx/ubuntu/manifests/sha256:acd85db6e4b18aafa7fcde5480872909bd8e6d5fbd4e5e790ecc09acc06a8b78'
        r = requests.get(url=url,headers=self.headers)
        print(r.status_code,r.headers,r.text)


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


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