栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何从私有Docker注册表中删除图像?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何从私有Docker注册表中删除图像?

当前,您无法将注册表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>

这是你想要的吗?



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号