请教各位大佬, Docker registry push 的时候,如何检查版本号是否重复

329 天前
ITdream  ITdream

第一次推送 docker tag my-service:1.0.1 www.baidu.com/my-service:1.0.1 docker push www.baidu.com/my-service:1.0.1

第二次推送 docker tag my-service:1.0.1 www.baidu.com/my-service:1.0.1 docker push www.baidu.com/my-service:1.0.1

版本号是相同的,期望能返回错误提示

1314 次点击
所在节点   程序员  程序员
13 条回复
XSG
XSG
329 天前
不明白为啥要检查,如果仓库存在完全相同的镜像,是不会发生实质性的上传行为的
rrfeng
rrfeng
329 天前
不检查,会覆盖。
这是 by design 的。
XSG
XSG
329 天前
我觉着应该调用仓库接口查询
Zhuzhuchenyan
Zhuzhuchenyan
329 天前
默认行为就是会覆盖的,如果需要检查可以做一个前置步骤,用以下命令
docker manifest inspect $IMGNAME:$IMGTAG
如果 tag 不存在会报:no such manifest
XSG
XSG
329 天前
或者换个思路,用代码的 commit sha 或者 tag 或者流水线 id 作为镜像 tag ,可以避免重复
WDFWL
WDFWL
329 天前
镜像仓库可以设置禁止 overwrite
seers
seers
329 天前
push 时候会检查 layer 的 digest ,一样的话不会上传 chunk
ITdream
ITdream
329 天前
@seers 这个一般要改什么配置吗?我们是 registry + Nexus 管理的
ITdream
ITdream
329 天前
@seers 需要怎么做呢?这个一般要改什么配置吗?我们是 registry + Nexus 管理的
ITdream
ITdream
329 天前
@XSG 我们做的可插拔的服务,构建服务并推送仓库的是一个人,审核发布是另外一个人,后面能想象出来问题了吧
julyclyde
julyclyde
329 天前
@Zhuzhuchenyan inspect 的是本地这一份?
Zhuzhuchenyan
Zhuzhuchenyan
329 天前
@julyclyde 这个命令会从 registry 拉数据,本地就算有这个 tag 但是没推到 registry 也是查询不到的。
litter123
litter123
329 天前
最简单的,需要 registry 端支持,给用户添加写权限,关闭 overwrite 覆写权限即可

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1027515

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX