容器镜像相比于代码包有更好的可移植性和更丰富的工具链生态,但其自带的与应用无关的数据极易使镜像臃肿,GB级镜像会导致分钟级冷启动。开启镜像加速可分两阶段共提速约90%,将分钟级的镜像拉取缩短至秒级。本文介绍使用ACR企业版实现镜像启动加速的使用原理和配置方法等。

使用优势(相比ACR个人版)

除了拥有ACR个人版的所有镜像加速功能外,ACR企业版镜像还具备以下优势:
  • 单独的网络访问,可配置独立的VPC安全规则管理仓库实例的网络访问。更多信息,请参见配置专有网络的访问控制
  • 独享的带宽,拉取镜像更加敏捷。
  • 镜像仓库自带的镜像转换功能,避免函数计算加速镜像转换完成前偶发的未加速的冷启动。

使用原理

对于运行环境为Custom Container且使用容器镜像服务ACR企业版镜像的函数,函数计算会在执行函数请求时扮演服务RAM角色,使用临时的AccessKey拉取加速镜像。以此,函数中的自定义容器镜像拉取及容器启动速度会得到显著提升。

注意事项

  • 默认支持镜像加速的地域有华北2(北京)、华北3(张家口)、华东1(杭州)、华东2(上海)、华南1(深圳)、中国香港、新加坡、美国(硅谷)、美国(弗吉尼亚)和日本(东京)。
  • 函数计算在解析ACR企业版镜像域名时,使用镜像仓库实例配置的专有网络默认解析或云解析PrivateZone自动解析的访问IP地址。
    • ACR企业版实例的访问控制页面的访问 IP中存在默认解析标识的IP地址为专有网络默认解析的IP地址。defaultIP
    • ACR企业版实例的访问控制页面的访问 IP中不存在默认解析标识时,该列表下的所有IP地址均为云解析PrivateZone自动解析的IP地址。privatezone-ip
  • 在创建或更新使用ACR企业版(基础版)镜像的函数后,请等待加速镜像生成,加速镜像通常会在创建或更新函数后5分钟内完成。函数计算将在函数调用时拉取您的仓库中的加速镜像。
  • 在创建或更新使用ACR企业版(标准版或高级版)镜像的函数后,函数计算将在函数调用时拉取您的仓库中的加速镜像。如果您的仓库内不存在加速镜像,则需要您开启镜像仓库的镜像加速功能生成加速镜像。具体操作步骤,请参见配置方法

配置方法

  1. 开启镜像加速。

    ACR企业版的标准版和高级版实例均提供了自带的加速镜像转换功能。镜像加速可在创建或更新仓库时开启,具体步骤,请参见转换加速镜像

  2. 选择加速镜像。

    在创建或更新函数时,请优先使用_accelerated结尾的加速镜像并开启镜像加速拉取。当函数配置完成后,可直接调用到加速镜像,确保函数调用自始至终具备加速效果。您可以在创建或更新函数时,通过以下方式选择加速镜像:

    • 通过函数计算控制台选择加速镜像。详细操作,请参见使用控制台创建函数
    • 通过Serverless Devs配置选择加速镜像。详细信息,请参见YAML规范
      customContainerConfig:
        image: registry-vpc.<regionId>.aliyuncs.com/fc-demo/python-flask:[镜像版本号_accelerated]
    • 通过SDK配置

其他操作

您可以通过登录函数计算控制台或调用GetFunction接口查看镜像加速的准备状态。具体步骤,请参见查看镜像加速准备状态