docker - docker 中的不可变标签是什么

标签 docker dockerfile

我看到了一个stackoverflow回答提到不可变标签的地方并进一步用谷歌搜索以了解它们到底是什么,找到了 article他们说的地方

A static, or immutable, tag always points to the same image. This is useful when you depend on a specific revision of an image For example, if you use the tag 3.4.13-debian-10-r8, this tag will always refer to v3.4.13 revision 8 of the image. The use of this tag ensures that users get the same image every time.

我不是docker方面的专家,上面引用的文本是否意味着它是否指向具有相同版本的相同图像,或者是否意味着它也指向具有更新版本的相同基础图像?

also in the same answer, it was mentioned about moving tag here,

移动标签是什么意思?

最佳答案

在注册表中,所有内容都是内容可寻址的,由摘要(当前为 sha256)引用。如果您提取带有摘要的图像,则它总是相同的,因为图像层和配置的摘要打包在具有自己的摘要的 list 中,从而产生看起来像默克尔树的东西。

由于人类不擅长理解和内存摘要,因此我们有标签。这些标签是可读的字符串,由注册表转换为摘要。标签实际上是一个指针。

在大多数注册表中,您可以将新图像推送到标记,替换标记指向的位置。如果您有 v1.0 的标签,您还可以推送 v1 的标签,任何想要最新版本 v1 的用户都会拉取 v1 标签。因此,当您推送 v1.1 时,您也会推送 v1,从而更改该指针。这些是可变标签,或者有​​些人可能将其描述为移动标签。

某些注册表支持不可变标签,因此一旦推送标签,它就永远无法引用不同的摘要。如果注册表不支持此功能,某些组织可能会将此作为策略实现。也就是说,您依赖于注册表和管理员的良好行为,因此当您确实需要不可变图像时,安全性仍然会建议使用摘要。

关于docker - docker 中的不可变标签是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72974268/

相关文章:

docker - 使用密码文件中的初始数据创建自定义 Neo4j Docker 镜像

node.js - 如何将 NodeJS 与 Angular 连接(在 Nginx 中)

docker - 如何将值传递到 docker 文件

docker - 无法减少docker容器内的ulimit

docker 和 Quagga BGP

jenkins - 如何配置 docker 以限制启动容器的端口范围

bash - 如何连接到在Docker容器中运行的Netcat?

windows - 无法准备上下文 : unable to evaluate symlinks in Dockerfile path for windows 10

mysql - 如何使MYSQL在Docker运行时启动并在Dockerfile中创建mysql用户

docker - 有没有更好的方法将文件和文件夹复制到 docker 容器?