首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >删除图像后,私有注册表无法正常工作

删除图像后,私有注册表无法正常工作
EN

Stack Overflow用户
提问于 2021-03-02 13:41:27
回答 1查看 516关注 0票数 0

我有一个问题,我的注册表停止工作后,我删除图像从它。我想从私有注册表中删除图像,以释放一些存储空间并清除未使用的图像。

我有以下设置/工作流:

  1. 我的私人注册中心有我自己签名的SSL证书。
  2. 我构建一个图像并将其推送到注册表。
  3. 我把图像拉到另一个主机上
  4. 我使用API从注册表中删除图像。
  5. 我叫注册表的垃圾收集器
  6. 我试图从注册表中提取图像
  7. 我试图再次将图像(未更改)推送到注册表。
  8. 我试图再次将图像放到另一个主机上。

步骤1-6运行良好,步骤4工作正常(我猜),但是步骤7-8并不像预期的那样工作。

预期结果:

  1. 图像将从注册表中完全删除。
  2. 在此过程中,我将图像推送到注册表中,一些层(我在步骤4中删除)会被推送。
  3. 我可以再拉一次图像

实际结果:

  1. 图像仍然存在于注册表中,但没有标记。看起来这就是注册表处理图像删除的方式..。
  2. 我可以推送图像,但它说每一层都有“层已经存在”
  3. 我再也拉不动这张照片了,码头先生说:Error response from daemon: manifest for registry.swarm/waterfall:latest not found: manifest unknown: manifest unknown

备注:

  • 步骤8失败后,检查注册表显示我的图像有一个名为“最新”的标记,但我无法使用API检索它的清单(基本上与返回的‘码头拉’错误相同)。
  • 推进图像并不能解决问题。

解决方案:

在注册表中修复图像的唯一方法是在主机上重建图像并推送新版本。

第二例:

如果我跳过第5步,第8步中的拉力就会起作用。它开始拉出图像,但在某一层,对接失败,并说“在x秒内重试”。几分钟后,莱克成功地把整个形象拉了出来。但是EOF失败了(仅此而已)

这是故意的行为还是我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2021-03-04 15:26:39

我认为这是分发注册表中一个旧的未解决的缓存问题(请在此处查看链接以打开)。

我已经将我的私有存储库配置为使用inmemory blobdescriptor缓存,并且遇到了与您相同的问题(参见下面的配置部分)。

代码语言:javascript
复制
version: 0.1
log:
  fields:
    service: registry
  level: info
storage:
  cache:
    blobdescriptor: inmemory
  filesystem:
...

对于这种配置,唯一简单的修复方法是重新启动专用的坞注册中心。

假设您已经将私有注册表部署为一个码头容器,只需运行:

代码语言:javascript
复制
docker restart <your_registry_container>

官方的文档只提到两种缓存blobdescriptor配置:inmemoryredis

但是显然,将blobldescriptor值设置为""会禁用缓存。

代码语言:javascript
复制
version: 0.1
log:
  fields:
    service: registry
  level: info
storage:
  cache:
    blobdescriptor: ""
  filesystem:
...

你不用再重新启动注册表了。

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

https://stackoverflow.com/questions/66440572

复制
相关文章

相似问题

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