如何真正删除Docker Blob和映像以释放私有Docker注册表中的空间

时间:2018-07-13 17:22:58

标签: docker docker-registry

我在清理正在运行的私有Docker注册表中的磁盘空间时遇到问题。我也很难理解Docker API调用返回的所有不同摘要SHA。

我的私有Docker注册表在.../docker/registry/v2中设置,它包含两个文件夹:blobs(〜1.4GB)和repositories(〜944KB)。我已经在其中推送了几个存储库和多个标签。

起初,我只需要删除一些用于前端显示的API调用所返回的回购/标记,但现在我需要释放磁盘空间并且不知道如何。

1。删除回购和标记名称(化妆品)

我通过解析每个存储库的Docker API调用GET /_catalogGET /<repo name>/tags/list的结果,在用户前端列出docker存储库及其标签。有时我需要删除内容,以使它们不会出现在此列表中,并且我已经可以通过以下方法来做到这一点。

GET /<repo name>/manifests/<tag>

DELETE /<repo name>/manifests/<digest SHA in headers.Docker-Content-Digest of the above response>

我不确定这是正确的方法,但是我需要以某种方式控制前端显示,并且这种方法现在已经奏效了。

此操作将本地repositories文件夹的大小减小了几KB,但不影响blobs文件夹。

2。清理磁盘空间并真正删除存储库的

我遇到的问题是如何真正释放blobs目录所占用的大磁盘空间。 GET /<repo name>/manifests/<tag>返回的摘要摘要SHA有很多:body.config.digest和各种body.layers[i].digest

我尝试对这些不同的摘要执行DELETE /<repo name>/blobs/<some digest>。对于某些人来说,它是成功的;对于另一些人,它说没有发现斑点。成功完成后,repositories目录大小将减少几KB,但blobs目录大小不会改变。

我只有在已经击中DELETE /<repo name>/manifests/<headers.Docker-Content-Digest>后才尝试此操作,因为我不想意外破坏某些东西并且无法从前端删除存储库/标签。

我的问题:由于私有Docker注册表中的回购/标签,清除空间的正确方法是什么?我希望最佳做法也可以将它们从/_catalog/<repo name>/tags/list中删除。

对于上面讨论的不同摘要的用法/含义的任何见解也将不胜感激。

0 个答案:

没有答案