ECI在运行容器前,需要先拉取用户指定的容器镜像,而因网络和容器镜像大小等因素,镜像拉取耗时往往成了ECI实例启动的主要耗时,用户可以通过镜像缓存技术来解决这个问题。

镜像缓存使用步骤:

  1. 创建镜像缓存。
  2. 查询镜像缓存信息。
  3. 使用镜像缓存创建ECI。

费用说明

您使用镜像缓存,包括创建费用和使用费用。

创建费用

在您提交镜像缓存创建申请后,阿里云会使用1C2G的ECI资源进行镜像缓存的创建,在创建过程中,包括的费用包括:
  • 1C2G的ECI资源费用,镜像缓存创建完成后停止计费。ECI实例计费参见计费概述
  • 申明的镜像快照盘费用,默认使用ESSD PL1云盘,20G大小,您可以自定义指定盘的大小(最小20GB)。云盘计费参见这里
  • 您每创建一次镜像缓存,会提交一份云盘快照,快照的计费参见快照计费方式

您可以在ECI控制台,查看对应的镜像缓存创建实例。

使用费用

您在创建ECI实例过程中,若指定使用镜像缓存特性,会为每个ECI实例挂载一块基于镜像缓存快照生成的云盘,费用请参见计费概述

以华北2地域为例,您为每个实例使用一个20GB的镜像缓存盘(ESSD PL1 20GB),每小时实例费用增加0.04元。

创建镜像缓存

  • 镜像缓存默认使用 1C2G 规格的 ECI 进行制作,制作过程中会产生一定的费用。
  • 目前单个镜像缓存最多支持包含20个镜像,镜像缓存大小可自定义,默认为20G。
  • 镜像缓存支持设置保留时长,过期后自动删除,该功能默认不启用,如需使用请设置保留时长。
  • 如果选择了私有镜像(非阿里云容器镜像服务托管的镜像),则需要提供私有镜像仓库的地址、用户名和密码,ECI 需要用来拉取镜像。
  • 如果所选镜像需要通过公网拉取(如 Docker官方镜像),则 ECI 需要具备外网访问

通过控制台创建

ECI 控制台 方便的创建镜像缓存。

通过 OpenAPI 创建

可以在 OpenAPI Explorer 上方便的查看和调试镜像缓存的创建接口。

相关参数说明如下:
ImageCacheName=normalimage(镜像缓存名称)
Image.1=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10
Image.2=registry-vpc.cn-beijing.aliyuncs.com/eci_open/node:11
Image.3=registry-vpc.cn-beijing.aliyuncs.com/eci_open/mysql:5.6
RetentionDays=30(保留时长,取值范围1~65536,单位天)
ImageCacheSize=20(镜像缓存大小,默认为20,取值范围20~500,单位GiB)

查询镜像缓存信息

可以在 OpenAPI Explorer 上方便的查看和调试镜像缓存的查询接口。

接口返回的信息如下:

{
	"ImageCaches": [
		{
			"CreationTime": "2019-12-18T03:18:02Z",
			"Status": "Ready",
			"ContainerGroupId": "eci-2zehl84ra0em1rzvku1f",
			"ImageCacheId": "imc-2zehl84ra0em1rzvku1f",(镜像缓存ID)
			"ImageCacheName": "normalimage",
			"Events": [...
			],
			"SnapshotId": "s-2ze10h8c369eb7spa2oe",
			"Images": [
				"registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.15.10",
				"registry-vpc.cn-beijing.aliyuncs.com/eci_open/node:11",
				"registry-vpc.cn-beijing.aliyuncs.com/eci_open/mysql:5.6"
			],
			"ExpireDateTime": "2020-01-17T20:49:47Z",(保留时间)
			"Progress": "100%"(创建进度)
		}
	],
	"RequestId": "1ABEBF6E-6780-49CA-8C34-EEC6017F3012"
}

使用镜像缓存创建ECI

使用镜像缓存创建ECI支持两种策略:

  • 指定具体的镜像缓存。
  • 开启自动匹配,由 ECI 来自动匹配和使用最佳的镜像缓存。
可以在 OpenAPI Explorer 上方便的查看和调试ECI实例创建接口。
注意 使用镜像缓存创建 ECI 时,需将容器的 ImagePullPolicy 参数设置为 IfNotPresent,否者效果将大打折扣。
指定具体的镜像缓存
ImageSnapshotId=imc-2zehl84ra0em1rzvku1f
开启自动匹配
AutoMatchImageCache=true

使用效果

在ECI控制台查看实例事件:

镜像已经存在于实例中,不再需要从远程拉取,镜像拉取耗时降低为0。

在阿里云容器服务中使用ECI镜像缓存,请参见使用镜像缓存 CRD 加速创建 Pod