云效流水线镜像构建并推送到镜像仓库相关问题

本文介绍云效流水线镜像构建并推送到镜像仓库相关问题及解决方案。

流水线推送镜像到ACR企业版报错409 Conflict

解决方案:检查对应的镜像仓库的镜像版本是否设置为“不可变”。当该设置为“不可变”时,该仓库下除 latest 之外的镜像版本均不可以覆盖,保证容器镜像版本一致性。

image

流水线推送镜像到ACR企业版显示镜像是unknow架构

解决方案:需要在流水线镜像构建的时候添加上--provenance=false参数。

image

流水线镜像构建报错failed to do request: Head "https://registry-1.docker.io xxx i/o timeout

  • 问题描述:如图所示拉取镜像超时。

    image

  • 解决方案:该报错原因是构建机与目标IP建连失败(dial tcp xxx timeout),若是偶发问题,可以尝试重试;若反复出现,需要考虑构建时是否流经跨境链路(docker.io是境外的镜像仓库)。跨境网络问题可以尝试通过下面方案1、2解决,非跨境链路可以通过下面方案3检查:

    • 方案1:将构建集群更换成云效香港公共构建集群、香港地域的私有构建集群。

    • 方案2:将对应的基础镜像pushACR中,再修改Dockerfile使用私有镜像仓库中的镜像进行构建。

    • 方案3:非跨境链路需要检查对应镜像仓库是否存在黑/白名单限制、网络是否可达(可在构建机上执行telnet等命令)

流水线镜像推送报错failed to solve: failed to push xxxx: server message: insufficient_scope: authorization failed

  • 问题描述:如图所示认证失败。

    image

  • 解决方案:您可按照以下步骤进行排查:

    1. 确认步骤中使用的镜像仓库服务连接是否有问题。

    2. 可能是命中缺陷导致,执行命令清理构建机上的docker buildx缓存,再执行构建看下:docker buildx prune -af

    更多解决思路,请参见:https://github.com/docker/buildx/issues/2364

流水线镜像构建使用ACR企业版docker login报错request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

流水线镜像构建使用ACR企业版docker login报错no such host

  • 问题描述:如图所示找不到主机。

    image

  • 解决方案:您可通过以下步骤进行排查:

    • 如果通过公网进行推送,请检查ACR企业版公网地址是否开放。

    • 如果通过内网进行推送,请检查对应的ACR企业版是否添加私有构建机所在的VPC。ACR企业版VPC网络域名是通过PrivateZone进行私网域名解析,当私有构建机不在对应VPC内的时候无法解析域名。

    image