以下假设registry的url是docker.admin.com:5000
以下文档针对registry版本2.5.1

  1. 查看有哪些镜像

     curl -XGET docker.admin.com:5000/v2/_catalog
    
     输出:
    
     {"repositories":["busybox"]}
    

    此外还支持分页, 详情见 官网

  2. 查看镜像的所有版本
    假如我们想查看镜像 docker.admin.com:5000/busybox 的所有版本:

     curl -XGET docker.admin.com:5000/v2/busybox/tags/list
    
     输出:
    
     {"name":"busybox","tags":["latest"]}
    

    此接口也支持分页, 详见官网

  3. 删除镜像
    删除镜像需要我们在启动registry的时候启用了删除, 默认情况下registry是不支持删除的, 需要手动启用, 最简单的办法就是启动的时候加一个环境变量: -e REGISTRY_STORAGE_DELETE_ENABLED=true 就可以了。

    删除镜像分为删除描述信息和删除文件实体,删除文件描述信息并不会删除实际的文件实体(镜像的fslevel)。 这里以docker.admin.com:5000/busybox举例。
    删除镜像描述信息:

     curl -XDELETE docker.admin.com:5000/v2/busybox/manifests/sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912
    

    注意url最后的sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912, 这个是代表此镜像的摘要信息digest,是在镜像push到registry的时候生成的, registry 2 要求删除必须使用digest而不能使用tag。 那么怎么获取一个镜像的digest呢? 有两种办法:

    1. 拉取镜像的时候获取

       > docker pull docker.admin.com:5000/busybox:12
       12: Pulling from busybox
       Digest: sha256:29f5d56d12684887bdfa50dcd29fc31eea4aaf4ad3bec43daf19026a7ce69912
       Status: Downloaded newer image for docker.admin.com:5000/busybox:12
      
    2. 通过http api 获取

       curl -XGET  -I -H "accept:application/vnd.docker.distribution.manifest.v2+json" docker.admin.com:5000/v2/busybox/manifests/test
      

      删除文件

      首先查看一个镜像有哪些文件层:

       > curl -XGET docker.edooon.com:5000/v2/busybox/manifests/12
       ....
       "fsLayers": [
             {
                "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
             },
             {
                "blobSum": "sha256:56bec22e355981d8ba0878c6c2f23b21f422f30ab0aba188b54f1ffeff59c190"
             }
          ]
       ....
      

      输出里面有fsLayers字段, 表示镜像有多少文件层, 以及每一层的digest。通过digest删除fslayer:

       curl -XDELETE docker.edooon.com:5000/v2/busybox/blobs/sha256:56bec22e355981d8ba0878c6c2f23b21f422f30ab0aba188b54f1ffeff59c190
      

Q.E.D.