全部产品

容器镜像仓库构建服务失败问题排查

更新时间:2020-10-20 10:28:54

概述

阿里云容器镜像服务内的构建服务可以从代码源绑定,其设定是基于Dockerfile文件的构建规则,自动触发镜像构建,运行Dockerfile执行构建及构建完成后自动提交镜像到容器镜像仓库的CI能力。若出现问题会导致镜像构建失败。本文详细列举了在容器镜像构建过程中可能出现的问题现象、失败原因分析及解决方法。

详细信息

问题类型 问题场景 解决方法
绑定源代码仓库失败
说明:为了使用容器镜像构建服务,需要在创建镜像仓库时选择绑定相应的代码仓库。

在选择代码源时出现“源代码账户没有访问权限”类型的错误。

请确认代码源绑定是否成功。

选择代码源成功,但是无法找到自己创建的代码仓库:

  • 未列出任何代码仓库。
  • 不支持subgroup类型的代码仓库。
  • 官方gitlab(地址为https://www.gitlab.com)下拉列表中出现很多不属于自己的代码仓库,但是自己的代码仓库却找不到。

根据对应的问题场景选择对应的解决方法:

  • 可能是跨域网络质量不佳,此时您可以手动填写相应的命名空间和代码仓库名。
  • 目前仅支持namespace/group、repository两级目录结构,不支持subgroup这样的多级结构。
  • 这是因为下拉列表会列出所有的公共仓库,此时您可以手动填写相应的命名空间和代码仓库名。
创建仓库成功,但是没找到构建栏。

ACR容器镜像构建服务创建绑定源代码的镜像仓库的流程是:

  1. ACR会先创建镜像仓库。
  2. ACR会通过授权的token请求您的代码仓库,在该仓库下创建webhook。
  3. 绑定您的代码仓库到第一步创建的镜像仓库中。

成功完成整个流程后:

  • 您可以在仓库详情页会找到构建栏。
  • 如果未找到构建栏,请按以下步骤依次进行确认:
    1. 刷新前端页面看是否创建成功。
    2. 请确保您颁发给ACR的token具备创建webhook的权限。
    3. 请确保您代码仓库中namesapce、repository与Git仓库的URL中的一致。
创建构建规则失败 构建规则数超限。

如有需求,请提交工单提升额度。

自动触发构建失败 ACR容器镜像构建系统会依靠您的源代码平台发送的webhook请求来匹配构建规则,进而触发镜像构建,此时会出现构建失败问题。
  • 代码仓库下的webhook被误删除:
    需要您重建webhook。
  • 您代码仓库中namesapce、repository与Git仓库的URLl中的不一致,很可能是您更改了用户名和仓库名:
    需要您回滚变更操作。
构建速度过慢 镜像构建速度过慢,可能是代码拉取、镜像拉取、资源下载等影响到了构建速度。这类问题主要受跨域网络质量差、速度低的影响。

使用ACR产品能力来加速构建:

  • 对于ACR-EE企业版实例构建服务,您可以参见以下步骤:
    1. 您可以使用海外源加速能力。
    2. 如果海外源加速影响到了国内源的拉取速度,您还可以选择直拉国内源。
    3. 综合以上两种能力来差异化加速各种源,以取得极速构建体验。
  • 对于ACR默认实例构建服务,您可以参见以下步骤:
    1. 您可以使用海外机器构建选项。
    2. 您可以使用构建缓存。
源代码相关失败 源代码仓库不存在(或无权限)。

阿里云Code账户如果更改了Code的用户名,会出现无法拉取远端代码库的问题。您可以参见以下步骤:

  1. 回滚更改的用户名。
  2. 提交工单,重新绑定阿里云Code账户。
拉取源代码超时。

跨域网络质量不稳定导致源代码拉取超时。请参见构建速度过慢章节内容使用海外加速能力来加快代码拉取速度。

镜像拉取失败 拉取海外源镜像失败。

ACR容器构建系统已mirror dockerhub源。但是如果您使用了国外云厂商的镜像源,会收到跨域链路的影响,拉取速度可能较慢。此时,您可以参见以下方法解决问题:

  • 建议您备份镜像到ACR,构建时直接使用ACR的镜像。
  • 您可以使用海外构建能力。
ACR默认实例拉取阿里云VPC域名镜像失败。

默认实例请使用公网域名进行镜像构建。

ACR-EE企业版实例拉取阿里云公网域名镜像失败。

企业版实例请使用VPC内网域名进行镜像构建。

其它情况请提交工单解决。
镜像推送失败

构建成功后,可能因网络问题出现镜像推送失败。

  • 默认实例镜像推送失败:
    如果您使用了海外机器构建,则可能因跨域网络问题导致镜像推送到国内地域失败。请进行重试或者切换国内构建。
  • 企业版实例镜像推送失败:
    ACR-EE企业版构建服务使用内部网络来推送镜像,如果出现推送失败,请提交工单解决。
构建任务长时间等待 ACR默认实例和企业版实例的构建服务对单一用户并发构建数都有限制。
  1. 如果您确定是超过并发构建数导致任务等待,您可以参见以下方法解决问题:
    • 默认实例用户可以升级到企业版实例。
    • 企业版实例用户可以申请提升额度。
  2. 如果您未超过并发构建数限制,但是任务仍长时间处于等待状态,请您提交工单解决。
构建过程失败 构建过程中出现错误的原因很负责,但可以划分成一下两类并按方案解决。
  • 资源拉取超时:
    请参见构建速度过慢的解决方法来加速您的镜像构建速度。
  • 构建命令执行失败:
    请您确认在您的本地机器构建无异常后提交工单咨询原因。

适用于

  • 容器镜像服务