首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头注册中心垃圾收集

码头注册中心垃圾收集
EN

Stack Overflow用户
提问于 2017-07-12 01:15:09
回答 2查看 18.4K关注 0票数 20

最近开始使用Docker注册表作为公司码头映像的中心。几周后,我发现码头注册中心吃掉了所有的磁盘空间:

我们为开发人员提供了一个自动部署,每次从GIT中提取最新的主程序,然后创建docker映像并将其推送到我们的注册表。图像名称和图像标记总是相同的。因此,我预计旧的图像会被新的图像覆盖,但实际上所有这些层都是在.../docker/registry/v2/blobs/sha256/文件夹中收集的。

内置的垃圾收集器没有帮助:/usr/bin/docker注册表/bin/注册表垃圾收集它不会删除未使用的层并生成smth.like:标记为1204的blobs,符合删除条件的0 blobs。

我们只有一个码头形象。但它经常被推到注册中心。如何只保留图像的最新版本?

注册表版本为2.4.0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-12 03:08:26

若要强制垃圾收集器删除未标记的图像,必须删除一些清单文件。从DockerRegistry2.4.0开始,我就已经在生产中使用了一个脚本,并且仍然可以使用2.6.1:

registry.sh

编辑:我用Python重写了它,并创建了一个Docker映像:注册表

票数 7
EN

Stack Overflow用户

发布于 2019-09-18 09:45:32

由于DockerRegistry2.7.0(截止209-09-18年为2.7.1),有一个标志--delete-untagged删除那些未引用的blobs

docker exec -it -u root registry bin/registry garbage-collect --delete-untagged /etc/docker/registry/config.yml

不过,它并不能消除空目录。所有空的blob和存储库目录仍将保留。

我在文档中也没有发现任何提到该标志的地方,我在一个GitHub线程中找到了它。

根据源代码的说法,短格式是-m

GCCmd.Flags().BoolVarP(&removeUntagged, "delete-untagged", "m", false, "delete manifests that are not currently referenced via tag")

以下是拉请求:https://github.com/docker/distribution/pull/2302

编辑:-m (--delete-untagged)选项仍然是多拱清单:https://github.com/distribution/distribution/issues/3178的buggy。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45046752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档