cnb镜像推送异常,返回412 Precondition Failed#1339
No response
日志显示412异常,但是制品库显示成功推送,并且镜像架构显示 unknown/unknown,正常应该为linux/amd64。
unknown/unknown
linux/amd64
流水线链接:https://cnb.cool/fengqing-dev/haodanku/hdk-applet-order/-/build/logs/cnb-c6g-1j0oklepr
第二次炸了:https://cnb.cool/fengqing-dev/haodanku/hdk-applet-order/-/build/logs/cnb-mk8-1j0omi2ik
观察到仓库开启了禁止覆盖的两条策略,1.1.2-41符合语义化标签的匹配,麻烦尝试先将禁止覆盖策略关掉再次推送试下
这个不是单纯的覆盖问题。 是推送出了BUG,推了一个unknown/unknown上去,然后后面触发的419,上面截图那个标签架构你看看。
@Mr.d 请问1.1.2-41这个标签的构建方式和其余标签是一样的吗,数据库看到对应制品的manifest是oci格式,其余的是docker格式
都是一样的,流水线没有变过。 群里 @卢嘉辉大佬 说是因为节点升级,开启了buildx异构导致了,排除了这个节点。 我这边后面没有继续出现该问题了。 这个issue是为了你们后续跟进处理这种问题。
@coldenchen
问题还是存在。
https://cnb.cool/fengqing-dev/haodanku/hdk-applet-order/-/build/logs/cnb-fko-1j0th9f6o https://cnb.cool/fengqing-dev/haodanku/hdk-applet-order/-/build/logs/cnb-0mo-1j0tgputp
流水线链接
@coldenchen 问题还是存在。
@Mr.d(嗯嗯) 好的 多谢反馈,还在排查中
频率大概1/3了,触发太高了。
@Mr.d(嗯嗯) 请问在反馈群吗,可以加下你吗,这个问题有了一点初步结论
这个问题主要还是containerd-snapshot特性导致的,包括架构unknown和后面的412错误两个问题。暂时先可以使用docker buildx build --push这样的命令来构建推送,代替流水线中的docker build,可以先试下能否正常使用,后面有了明确结论我们再讨论下具体的措施。
#1076
我在反馈2群,没有看到你的昵称。
我运行时候没有开启snapshot机器特征,不应该分配到这个机器吧。
还是说现在已经全部默认开启了?
我在反馈2群,没有看到你的昵称。 我运行时候没有开启snapshot机器特征,不应该分配到这个机器吧。 还是说现在已经全部默认开启了?
@Mr.d(嗯嗯) 你好,加您了
在之前的docker版本(26到28.2之间),开启snapshotter之后使用buildkit构建并推送单架构镜像实际也会打出一个类似多架构镜像的产物,包含index和两个manifest,镜像清单和Attestation清单。一个tag实际应该绑定到顶级index上,子manifest不应该使用tag推送,但是旧版本docker会使用tag推送两个manifest,触发不可覆盖规则,被拦截下来报错412。当前临时解决方案使用provenance=false参数来保证推送成功,也可以不使用默认的default构建器来解决。官方升级到28.2之后修复了这个bug。相关issue可参考:https://github.com/moby/moby/pull/49949
该问题已修复,并发布上线,可以启用 Docker 标签覆盖策略功能了
提供一下 trace id 或 响应头 traceparent?
No response
描述一下重现步骤?更快的确认问题