Can';t从Docker代理/镜像/缓存注册表中删除图像
通过docker compose运行Can';t从Docker代理/镜像/缓存注册表中删除图像,docker,docker-registry,docker-proxy,Docker,Docker Registry,Docker Proxy,通过docker compose运行注册表:2图像1.27.4,docker本身位于19.03.13 注册表被配置为,也被一些人称为“代理”或“镜像”。设置非常基本,并遵循官方文档: version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry delete:
注册表:2
图像1.27.4
,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删除此注册表上的图像时
export HEADER="Accept: application/vnd.docker.distribution.manifest.v2+json"
curl -s -H $HEADER https://<HOST>/v2/<CATALOG>/tags/list
当我对注册表配置中注释掉的代理
位执行相同操作时,它会工作
这让人感觉非常熟悉,公平地说,这是有记录的。这个用例不是,或者是?注册表:2映像的拉取缓存功能正是为拉取而设计的。任何其他操作,如推送或删除,都不受支持,预计会出现错误。要在源位置删除清单,您需要对该注册表运行delete命令。我不相信有任何API会过早地只从缓存中删除清单,这是一个固定的7天过期时间。我很好奇对缓存运行删除的用例是什么?您是想在缓存中节省空间、刷新过时的条目,还是想从上游注册表中删除映像?感谢您的回答,来回答您上面的问题:我的具体用例能够删除意外进入其中的某些映像。如果我理解正确,我不应该这样做,而是让注册表通过清除过时的图像来修复自己?在我的例子中,这意味着确保没有人在7天内提取这些不需要的图像?@zb226我相信无论是否已提取,都需要7天。据我所知,手动清除缓存的唯一选项是重新启动存储/卷重置。当图像通过时,它会自动重新填充。根据刚获得的经验:无条件7天是正确的。有点遗憾的是,这些信息没有正式记录(除了来源)。好吧,现在至少我们有了这样一个答案供人们去谷歌搜索。再次感谢。
curl -sI -k -H $HEADER https://<HOST>/v2/<CATALOG>/manifests/<TAG>
curl -H $HEADER -X DELETE https://<HOST>/v2/<CATALOG>/manifests/<SHA>
404 page not found