我们将私有(private)docker注册中心更新为正式的Registry 2.0。这个版本现在可以删除由#标签标识的docker镜像(请参阅https://docs.docker.com/registry/spec/api/#deleting-an-image),但是我仍然看不到清理旧镜像的方法。

由于我们的CI服务器不断产生新图像,因此,我需要一种方法来从私有(private)注册表中删除所有不再由命名标签标识的图像。

如果没有内置的方法可以实现此目的,那么我认为自定义脚本可能会起作用,但是我也看不到v2 API方法来列出图像的所有存储的标签。

如何保持我的私有(private)注册表清洁?有什么提示吗?

最佳答案

删除图像(您可以保留10个最新版本,就像在CI中一样)可以通过三个步骤完成:

  • 通过设置环境变量REGISTRY_STORAGE_DELETE_ENABLED: "true"并将其传递给docker-registry
  • 来启用图像删除
  • 在脚本下运行(它将删除所有图像和标签,但保留最近的10个版本)

  • 运行垃圾回收(您可以将其放入日常cron任务中)


  • Registry.py可以从下面的链接下载,它还允许列出图像,标签和图层,以及删除特定的图像和/或标签。

    https://github.com/andrey-pohilko/registry-cli

    在执行垃圾回收之前,我的注册表文件夹是7 Gb,在执行上述步骤之后,它缩小到1 Gb。

    关于docker - Docker Registry 2.0-如何删除未使用的镜像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29802202/

    10-11 08:31