使用镜像缓存(ImageCache)创建ECI实例可以加速拉取镜像,减少ECI实例的启动耗时。本文介绍镜像缓存的基本功能、创建和使用方式、以及计费说明等。
功能简介
在运行容器前,ECI需要先拉取您指定的容器镜像,但因网络和容器镜像大小等因素,镜像拉取耗时往往成了ECI实例启动的主要耗时。为加速实例的创建速度,ECI提供镜像缓存功能。您可以预先将需要使用的镜像制作成缓存快照,然后基于该快照来创建ECI实例,避免或者减少镜像层的下载,从而提升实例的创建速度。
经实测,以使用Docker Hub的flink镜像(约386.26 MB)创建ECI实例为例,正常创建过程中,镜像准备阶段需要耗时50s,使用镜像缓存后,镜像准备阶段无需耗时,可以极大节约实例启动耗时。
具体提升速度由ECI实例中使用的镜像个数、镜像大小和镜像仓库网络因素等决定。
创建方式
镜像缓存的创建分为手动创建和自动创建两种方式。
推荐使用自动创建的镜像缓存,可以节约使用成本。但对于首次创建就需要加速创建ECI实例的场景,需提前手动创建镜像缓存。
手动创建
您可以根据需要,自行设置名称、大小等参数来创建镜像缓存。过程如下:
一个镜像缓存对应一份快照,手动创建的镜像缓存快照由您自行管理。
创建过程中,系统将创建一个ECI实例(2 vCPU、4 GiB内存),并挂载一块ESSD PL1类型的云盘用于中转创建镜像缓存对应的快照。创建完成后,该实例和云盘将被自动释放。
极速镜像缓存功能用于缩短镜像缓存的创建时长。开启该功能后,系统将启用快照极速可用能力,临时创建一份本地快照。本地快照创建完成即可使用镜像缓存功能。
说明本地快照创建完成后,系统将自动开始创建标准快照,在此期间,镜像缓存对应使用本地快照;待标准快照创建完成后,系统将自动删除本地快照,在此之后,镜像缓存对应使用标准快照。
镜像缓存复用功能用于加快镜像缓存的制作速度。开启该功能后,在创建镜像缓存的过程中,系统将自动匹配已有镜像缓存,如果新的镜像缓存与已有镜像缓存存在重复的镜像层,新的镜像缓存将复用已有镜像缓存的镜像层,从而加速镜像缓存的创建。
自动创建
创建ECI实例时,如果开启了自动匹配镜像缓存,则在未匹配到镜像缓存的情况下,系统会在创建ECI实例的同时,自动创建一个镜像缓存。过程如下:
一个镜像缓存对应一份快照,自动创建的镜像缓存快照由阿里云管理。
创建过程中,系统将创建一个ECI实例,并使用ECI实例自带的存储空间来中转创建镜像缓存对应的快照。创建完成后,该实例将被自动释放。
说明每个ECI实例默认有30 GiB的临时存储空间可用于创建镜像缓存,如果您的镜像大小超出了30 GiB,需要额外声明临时存储空间。具体操作,请参见增加临时存储空间大小。
对比
手动创建和自动创建的镜像缓存在大小、保留时长等方面均有差异,对比如下表所示。
对比项 | 手动创建 | 自动创建 |
名称 | 可以自定义设置名称。 | 名称由系统自动生成,格式为 |
大小 | 默认为20 GiB,可以自定义设置大小。 | 默认为30 GiB。如果创建ECI实例时声明了临时存储空间,则镜像缓存大小=30 GiB+临时存储空间大小。 |
保留时长 | 默认永久保留,可以自行设置保留时长(单位为天),过期后将被自动删除。 | 默认由阿里云管理保留时长。
|
镜像缓存复用 | 可以开启镜像缓存复用来复用已有镜像层,加快镜像缓存的制作速度。 | 不支持配置该功能。 |
极速镜像缓存 | 可以开启极速镜像缓存来临时创建一份本地快照,缩短镜像缓存的创建时长。 | 不支持配置该功能。 |
配额限制 | 可以调用ListUsage接口,或者在控制台的权益配额页面查看配额。 如果配额无法满足需求,请提交工单申请提升配额。 | 可以调用ListUsage接口查看配额。 如果配额无法满足需求,请提交工单申请提升配额。 |
淘汰策略 | 默认情况下,当数量达到配额限制时,无法继续手动创建镜像缓存。 支持通过OpenAPI(CreateImageCache或UpdateImageCache接口)将某个镜像缓存的淘汰策略(EliminationStrategy参数)配置为LRU,表示当数量达到配额限制时,系统可以自动删除最不常用的LRU镜像缓存。 | 当数量达到配额限制时,系统会遵循LRU规则,自动删除最不常用的镜像缓存。 |
使用成本 | 收取创建费用和使用费用。 | 仅收取使用费用,不收取创建费用。 |
使用方式
使用镜像缓存可以加快ECI实例的创建。创建ECI实例时,支持自动匹配和明确指定镜像缓存两种方式:
使用方式 | 说明 |
自动匹配 | 自动匹配使用最优的镜像缓存。系统将按照以下顺序进行匹配:
说明 如果没有匹配到镜像缓存,系统将在创建ECI实例的同时自动创建镜像缓存。创建时将正常拉取镜像,建议您将容器的镜像拉取策略配置为按需拉取(IfNotPresent),以避免镜像层重复下载,影响镜像缓存的使用效果。 |
明确指定 | 明确指定使用的镜像缓存。该镜像缓存必须为创建完成(Ready)状态。 |
注意事项
单个镜像缓存最多包含20个镜像。
创建镜像缓存需要拉取容器镜像,因此创建时长由镜像个数、镜像大小、网络等多种因素决定。
手动创建镜像缓存时采用您指定的容器镜像,自动创建镜像缓存时采用实例中所声明的容器镜像。
如果镜像为私有镜像(非阿里云容器镜像服务ACR托管的镜像),则需要提供私有镜像仓库的访问凭证,包括地址、用户名和密码。
如果镜像需要通过公网拉取(如Docker官方镜像),则需要配置EIP或者NAT来访问公网。更多信息,请参见为ECI Pod配置公网连接。
如果镜像由于远程仓库超时等原因导致拉取失败,推荐您使用容器镜像服务ACR,将镜像上传至阿里云仓库。
对于手动创建的镜像缓存,建议在创建时设置保留时长,以免产生不必要的快照费用。对于自动创建的镜像缓存,由阿里云管理对应的快照,您无需关注保留时长。
创建镜像缓存后,您可以通过其制作事件了解镜像缓存的制作过程,系统最多可以保留最新的50条制作事件。
计费说明
操作阶段 | 手动创建的镜像缓存 | 自动创建的镜像缓存 |
创建镜像缓存 | 涉及以下计费项:
| 不收费 |
使用镜像缓存 | 云盘费用 | 如果镜像缓存大于30 GiB,需增加临时存储空间并为其付费。 |
更多信息,请参见镜像缓存计费。