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

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