Docker中immutable tags(不可变标签)与moving tag含义咨询
关于Docker镜像两类标签的说明
不可变(静态)标签的指向规则
你看到的Bitnami文档描述是准确的:不可变标签一旦正式推送到镜像仓库,就会永久指向完全一致的镜像内容,不会发生任何指向变更。
- 不存在“基础镜像不变、更新上层版本后仍沿用同一个不可变标签”的情况:只要镜像内容有任何调整——不管是修复应用bug、升级依赖,还是给底层基础镜像打安全补丁,维护者都必须使用全新的不可变标签推送,绝对不会覆盖原有不可变标签的指向。
- 以你提到的
3.4.13-debian-10-r8标签为例,它从发布的那一刻起,对应的每一层镜像哈希、应用版本、基础镜像版本、内置配置全都是固定的,你在任何时间、任何环境下拉取这个标签,拿到的镜像内容和发布时完全一致,不会有任何差别。
移动(可变)标签的定义
移动标签和不可变标签规则正好相反,这类标签的文本固定,但维护者可以随时修改它指向的镜像版本,是日常使用中更常见的标签类型:
- 典型的移动标签包括
latest、大版本标签(如3、3.4)、不带修订号的小版本标签(如3.4.13)。比如今天3.4.13标签指向你看到的r8修订版,两周后维护者完成安全补丁迭代出了r9修订版,就可以直接把3.4.13这个标签重新绑定到r9版本的镜像上,标签本身没有任何变化,但用户拉取时拿到的就是更新后的镜像内容。 - 你最开始看到的
docker build --pull参数,核心作用就是针对这类移动标签设计的:构建时强制从远程仓库拉取标签当前指向的最新镜像,避免使用本地缓存的旧版本镜像做构建;如果你的Dockerfile里全用的是不可变标签作为基础镜像,加不加--pull都不会有构建结果差异。
内容的提问来源于stack exchange,提问作者SAI VINIL
相关产品推荐
相关产品推荐

