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

绑定源代码仓库失败

说明 为了使用容器镜像构建服务,需要在创建镜像仓库时选择绑定相应的代码仓库。

问题现象一

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

解决方法:请确认代码源绑定是否成功。

问题现象二

选择代码源成功,但是无法找到自己创建的代码仓库:
  • 未列出任何代码仓库。
  • 不支持Subgroup类型的代码仓库。
  • 官方GitLab下拉列表中出现很多不属于自己的代码仓库,但是自己的代码仓库却找不到。
解决方法
  • 可能是跨域网络质量不佳,此时您可以手动填写相应的命名空间和代码仓库名。
  • 目前Git仓库的URL仅支持namespace/repository.git这样的两级目录结构,不支持超过两级的多级结构。
  • 下拉列表会列出所有的公共仓库,此时您可以手动填写相应的命名空间和代码仓库名。

问题现象三

创建仓库成功,但是没找到构建栏。

解决方法:容器镜像服务构建服务创建绑定源代码的镜像仓库的流程如下。
  1. 容器镜像服务会先创建镜像仓库。
  2. 容器镜像服务会通过授权的Token请求您的代码仓库,在该仓库下创建Webhook。
  3. 绑定您的代码仓库到第一步创建的镜像仓库中。
当您成功完成整个流程:
  • 您可以在仓库详情页找到构建栏。构建
  • 如果未找到构建栏,请按以下步骤依次进行确认:
    1. 刷新前端页面看是否创建成功。
    2. 请确保您颁发给容器镜像服务的Token具备创建Webhook的权限。
    3. 请确保您代码仓库中NameSapce、Repository与Git仓库的URL中的一致。

创建构建规则失败

问题现象

构建规则数超限。

解决方法:如有需求,请登录工单系统,提交工单提升额度。

自动触发构建失败

问题现象

容器镜像服务构建系统会依靠您的源代码平台发送的Webhook请求来匹配构建规则,进而触发镜像构建,此时会出现构建失败问题。

解决方法
  • 代码仓库下的Webhook被误删除:

    需要您重建Webhook。

  • 您代码仓库中NameSapce、Repository与Git仓库的URL中的不一致,很可能是您更改了用户名和仓库名:

    需要您回滚变更操作。

构建速度过慢

问题现象

镜像构建速度过慢,可能是代码拉取、镜像拉取、资源下载等影响到了构建速度。这类问题主要受跨域网络质量差、速度低的影响。

解决方法

您可以使用容器镜像服务的产品能力来加速构建:
  • 对于ACR-EE企业版实例构建服务,您可以参见以下步骤:
    1. 可以使用海外源加速能力。
    2. 如果海外源加速影响到了中国内地源的拉取速度,还可以选择直拉中国内地源。
    3. 综合以上两种能力来差异化加速各种源,以取得极速构建体验。
  • 对于ACR个人版实例构建服务,您可以参见以下步骤:
    1. 您可以使用海外机器构建选项。
    2. 您可以使用构建缓存。

源代码相关失败

问题现象一

源代码仓库不存在(或无权限)。

解决方法

阿里云Code账户如果更改了Code的用户名,会出现无法拉取远端代码库的问题。您可以参见以下步骤:
  1. 回滚更改的用户名。
  2. 请登录工单系统,提交工单,重新绑定阿里云Code账户。

问题现象二

拉取源代码超时。

解决方法

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

镜像拉取失败

问题现象一

拉取海外源镜像失败。

解决方法

容器镜像服务构建系统使用的是Docker Hub Mirror镜像源。但是如果您使用了国外云厂商的镜像源,会受到跨域链路的影响,拉取速度可能较慢。此时,您可以参见以下方法解决问题:
  • 建议您将国外云厂商的镜像上传到容器镜像服务,构建时直接使用容器镜像服务的镜像。
  • 您可以使用海外构建能力。

问题现象二

ACR个人版实例拉取阿里云VPC域名镜像失败。

解决方法

个人版实例请使用公网域名进行镜像构建。

问题现象三

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

解决方法

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

镜像推送失败

问题现象

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

解决方法

  • 个人版实例镜像推送失败:

    个人版实例构建完成后将通过公网推送至目标地域,可能因跨域网络问题导致镜像推送失败。如果您使用了海外构建功能,则可能因跨域网络问题导致镜像推送到中国内地地域失败。如遇到推送失败问题请进行重试。

  • 企业版实例镜像推送失败:

    ACR-EE企业版构建服务使用内部网络来推送镜像,如果出现推送失败,请登录工单系统,提交工单解决。

构建任务长时间等待

问题现象

ACR个人版实例和企业版实例的构建服务对单一用户并发构建数都有限制。

解决方法

  • 如果您确定是超过并发构建数导致任务等待,您可以参见以下方法解决问题:
    • 个人版实例用户可以升级到企业版实例。
    • 企业版实例用户可以申请提升额度。
  • 如果您未超过并发构建数限制,但是任务仍长时间处于等待状态,请登录工单系统,提交工单解决。

构建过程失败

构建过程中出现错误的原因很复杂,您可以划分成以下两类并按方案解决。
  • 资源拉取超时:

    加速您的镜像构建速度。具体操作,请参见构建速度过慢

  • 构建命令执行失败:

    请您确认在您的本地机器构建无异常后,请登录工单系统,提交工单咨询原因。