我正在使用基于微服务的体系结构,并且为每个微服务构建了单独的管道。 我正在使用Docker BuildandPush作为Azure构建管道中的一个阶段,并且在每次成功构建中,图像都被推送到DockerHub。
现在,我主要关心的是随着时间的推移,我的DockerHub注册表中充满了冗余映像,那么如何通过任何管道阶段或脚本自动清除那些冗余映像?
答案 0 :(得分:0)
您可以通过注册表REST API删除映像。为此,您需要知道Docker映像名称和要删除的摘要。图像可以通过其name
和reference
从注册表中删除,reference
必须是摘要,否则删除将失败。
调用rest API:
DELETE http://registryhost:reigstryport/v2/<docker_image_name>/manifests/<reference>
例如:
curl -v -X DELETE https://my.docker.registry.com:5000/v2/mytestdockerrepo/manifests/sha256:66675d81b9bd5eafc105832b78abb91cab975bbcf028ca4bce4afe73f66914ee
对于成功的调用,您应该获得202 Accepted。如果图像已被删除或不存在,则会发出404 Not Found响应。
注意:从注册表版本2.3或更高版本删除清单时,在对清单进行HEAD或GET操作以获取正确的摘要时,必须使用以下标头:
Accept: application/vnd.docker.distribution.manifest.v2+json
有关详细信息,请参阅此document。