我运行了一个私有Docker注册表,我想latest
从存储库中删除除之外的所有图像。我不想删除整个存储库,仅删除其中的一些图像。该API文档不提一个办法做到这一点,但肯定这是可能的?
当前,您无法将注册表API用于该任务。它仅允许您删除存储库或特定标签。
通常,删除存储库意味着删除与此仓库关联的所有标签。
删除标签意味着删除图像和标签之间的关联。
以上所有都不删除单个图像。它们留在您的磁盘上。
对于此解决方法,您需要将docker映像存储在本地。
解决方案的一种解决方法是删除除最新标签以外的所有标签,从而潜在地删除对关联图像的引用。然后,您可以运行
此脚本
来删除所有图像,这些图像未被任何标签或任何已使用图像的祖先所引用。
考虑一个这样的图像图,其中大写字母(A
,,B
…)表示短图像ID,<-
表示一个图像基于另一幅图像:
A <- B <- C <- D
现在,我们向图片添加标签:
A <- B <- C <- D
| |
| <version2>
<version1>
在此,标签<version1>
引用图像C
,标签<version2>
引用图像D
。
在您的问题中,您说过您想删除
所有图片,但
latest
。现在,该术语不太正确。您已经混合了图像和标签。查看图表,我想您会同意该标记<version2>
代表最新版本。实际上,根据此问题,您可以具有代表最新版本的标签:
A <- B <- C <- D
| |
| <version2>
| <latest>
<version1>
由于<latest>
标签引用了图像,D
所以我问您:除了图像之外,您是否真的要删除所有内容D
?可能不是!
如果<version1>
使用Docker REST API 删除标签,则会得到以下信息:
A <- B <- C <- D
|
<version2>
<latest>
切记: Docker永远不会删除映像!即使这样做,在这种情况下也无法删除图像,因为该图像C
是D
被标记图像的祖先的一部分。
即使使用 此脚本 ,也不会删除任何图像。
在您可以控制某人何时可以拉入或推入注册表的条件下(例如,通过禁用REST接口)。如果没有其他图像基于该图像并且没有标签引用该图像,则可以从图像图中删除该图像。
请注意,下面的图,该图像D
是 没有
根据C
,但对B
。因此,D
不依赖C
。如果删除<version1>
该图中的标记,则该图像C
将不会被任何图像使用,并且
此脚本 可以将其删除。
A <- B <--------- D
\ |
\ <version2>
\ <latest>
\ <- C
|
<version1>
清理后,您的图像图如下所示:
A <- B <- D
|
<version2>
<latest>
这是你想要的吗?
我正在尝试将一个图像推送到我的docker私有存储库: Docker告诉我: push引用存储库[living-registry.com:5000/busybox]Get https://living-registry.com:5000/v1/_ping:read tcp 195.83.122.16:39714->195.83.122.16:5000:read:对等体重置连接 这些命令正在Core
问题内容: 我已经建立了一个4节点kubernetes集群,该集群运行都在CoreOS上运行的多容器Pod。这些图像来自公共和私人存储库。现在,我必须登录到每个节点,并在每次更新图像时手动下拉图像。我希望能够自动将其拉出。 我试过在每台服务器上运行docker登录并将.dockercfg文件放在/ root和/ core中 我也使用.docker / config.json完成了上述操作 我已将密
问题内容: 我创建了两个Docker容器。第一个提供专用的Docker注册表,第二个提供官方Docker注册表的镜像: 现在,我想将两者结合起来。每当用户 提取 图像时,都应首先查询私有注册表,然后查询镜像。当图像被 推送时, 它们仅应被推送到私有注册表。 我不知道如何做到这一点。任何帮助表示赞赏。 问题答案: 您不能仅仅强制所有 docker push 命令推送到您的私有注册表。原因之一是您可以
问题内容: 我错误地 从Windows计算机中 删除了Java文件夹 。 现在我在各种插件以及所有插件中都遇到了问题,它要求我 下载最新的JRE 。当我尝试这样做时,它说 JRE已经存在 ,您是否要删除旧的JRE并安装新的JRE?我说是,然后给我错误“ 1723”。 简而言之, JRE不会被卸载 。 我重新安装了Java SDK,但是仍然无法正常工作。我再次卸载了Java SDK,并尝试卸载JRE
问题内容: 有没有办法从npm注册表中删除或删除整个模块? 注意:不允许您取消发布超过24小时的内容 问题答案: 考虑到最近的事件,有一篇关于此的文章。最好的选择是与npm联系,并希望您的软件包不受其他项目的依赖。 如果版本早于24小时,则取消发布将失败,并显示一条消息,联系support@npmjs.com。 如果您与支持人员联系,他们将检查删除该版本的软件包是否会破坏其他安装。如果是这样,我们
问题内容: 我试图从两个不同的项目注册表(gitlab容器注册表)中提取两个图像。所有这些都在一个文件中。 如何正确配置我的图像或配置变量(无论如何工作),以正确提取我的图像而不会出现任何访问问题? 我找到了与 部署令牌 一起使用的解决方案,该解决方案对我的项目注册表具有只读访问权限。问题是,如果我只有一个图像要拉出,那将起作用:如何使用gitlabci构建,推入和拉出多个Docker容器?