容器镜像服务的构建服务其设定是绑定应用代码源,基于Dockerfile文件的构建规则、自动触发镜像构建、运行Dockerfile执行构建及构建完成后自动提交镜像到容器镜像仓库的CI能力。若出现问题会导致镜像构建失败。本文详细列举了在容器镜像构建过程中可能出现的问题现象、失败原因分析及解决方法。
绑定源代码仓库失败
问题现象一:
在选择代码源时出现“源代码账户没有访问权限”类型的错误。
解决方法:请确认代码源绑定是否成功。
问题现象二:
- 未列出任何代码仓库。
- 不支持Subgroup类型的代码仓库。
- 官方GitLab下拉列表中出现很多不属于自己的代码仓库,但是自己的代码仓库却找不到。
- 可能是跨域网络质量不佳,此时您可以手动填写相应的命名空间和代码仓库名。
- 目前Git仓库的URL仅支持《namespace/repository.git》这样的两级目录结构,不支持超过两级的多级结构。
- 下拉列表会列出所有的公共仓库,此时您可以手动填写相应的命名空间和代码仓库名。
问题现象三:
创建仓库成功,但是没找到构建栏。
- 容器镜像服务会先创建镜像仓库。
- 容器镜像服务会通过授权的Token请求您的代码仓库,在该仓库下创建Webhook。
- 绑定您的代码仓库到第一步创建的镜像仓库中。
- 您可以在仓库详情页找到构建栏。
- 如果未找到构建栏,请按以下步骤依次进行确认:
- 刷新前端页面看是否创建成功。
- 请确保您颁发给容器镜像服务的Token具备创建Webhook的权限。
- 请确保您代码仓库中NameSpace、Repository与Git仓库的URL中的一致。
创建构建规则失败
问题现象:
构建规则数超限。
解决方法:如有需求,请提升额度。
自动触发构建失败
问题现象:
容器镜像服务构建系统会依靠您的源代码平台发送的Webhook请求来匹配构建规则,进而触发镜像构建,此时会出现构建失败问题。
- 代码仓库下的Webhook被误删除:
需要您重建Webhook。
- 您代码仓库中NameSpace、Repository与Git仓库的URL中的不一致,很可能是您更改了用户名和仓库名:
需要您回滚变更操作。
构建速度过慢
问题现象:
镜像构建速度过慢,可能是代码拉取、镜像拉取、资源下载等影响到了构建速度。这类问题主要受跨域网络质量差、速度低的影响。
解决方法:
- 对于ACR-EE企业版实例构建服务,您可以参见以下步骤:
- 可以使用海外源加速能力。
- 如果海外源加速影响到了中国内地源的拉取速度,还可以选择直拉中国内地源。
- 综合以上两种能力来差异化加速各种源,以取得极速构建体验。
- 对于ACR个人版实例构建服务,您可以参见以下步骤:
- 您可以使用海外机器构建选项。
- 您可以使用构建缓存。
源代码相关失败
问题现象一:
源代码仓库不存在(或无权限)。
解决方法:
- 回滚更改的用户名。
- 请重新绑定阿里云Code账户。
问题现象二:
拉取源代码超时。
解决方法:
跨域网络质量不稳定导致源代码拉取超时,您可以使用海外加速能力来加快代码拉取速度。更多内容,请参见构建速度过慢。
镜像拉取失败
问题现象一:
拉取海外源镜像失败。
解决方法:
- 建议您将国外云厂商的镜像上传到容器镜像服务,构建时直接使用容器镜像服务的镜像。
- 您可以使用海外构建能力。
问题现象二:
ACR个人版实例拉取阿里云VPC域名镜像失败。
解决方法:
个人版实例请使用公网域名进行镜像构建。
问题现象三:
ACR-EE企业版实例拉取阿里云公网域名镜像失败。
解决方法:
企业版实例请使用VPC内网域名进行镜像构建。
镜像推送失败
问题现象:
构建成功后,可能因网络问题出现镜像推送失败。
解决方法:
个人版实例构建完成后将通过公网推送至目标地域,可能因跨域网络问题导致镜像推送失败。如果您使用了海外构建功能,则可能因跨域网络问题导致镜像推送到中国内地地域失败。如遇到推送失败问题请进行重试。
构建任务长时间等待
问题现象:
ACR个人版实例和企业版实例的构建服务对单一用户并发构建数都有限制。
解决方法:
如果您确定是超过并发构建数导致任务等待,您可以参见以下方法解决问题。
- 个人版实例用户可以升级到企业版实例。
- 企业版实例用户可以申请提升额度。
构建过程失败
构建过程中出现错误的原因很复杂。如果发生资源拉取超时,您可以按以下方案解决。
加速您的镜像构建速度。具体操作,请参见构建速度过慢。