无法从 Docker 代理/镜像/缓存注册表中删除映像



通过docker compose1.27.4运行registry:2映像,docker本身位于19.03.13

注册表被配置为";"直通高速缓存";,也称为";"代理";或";镜像;一些人。设置非常基本,并遵循官方文档:

version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete:
enabled: true
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
proxy:
remoteurl: https://registry-1.docker.io

当使用标准程序通过API删除此注册表上的映像时。。。

  1. 查找标签名称

    export HEADER="Accept: application/vnd.docker.distribution.manifest.v2+json"
    curl -s -H $HEADER https://<HOST>/v2/<CATALOG>/tags/list
    
  2. 查找相应的SHA

    curl -sI -k -H $HEADER https://<HOST>/v2/<CATALOG>/manifests/<TAG> 
    
  3. 通过SHA 删除

    curl -H $HEADER -X DELETE https://<HOST>/v2/<CATALOG>/manifests/<SHA>
    

。。。最后一个命令我得到了404:

404 page not found

当我对注册表配置中注释掉的proxy位执行同样的操作时,它就工作了。

这让人感觉很熟悉,因为无法推动这样一个";"直通高速缓存";注册,公平地说,这是有文件记录的。这个用例不是——或者是吗?

registry:2映像的直通缓存功能正是为拉取而设计的。任何其他操作,如推送或删除,都不受支持,预计会出现错误。要删除源处的清单,您需要对该注册表运行delete命令。我不相信有任何API可以提前从缓存中删除清单,这是一个固定的7天到期时间。

最新更新