在AWS Fargate中使用可搜索OCI实现更快的容器启动

AWS Fargate支持Seekable Open Container Initiative (SOCI)

AWS最近宣布在AWS Fargate上支持Seekable Open Container Initiative (SOCI)。SOCI技术通过延迟加载镜像,显著缩短了在Amazon Elastic Container Service (ECS)上启动容器的时间。为了帮助客户充分利用这一新功能,AWS还发布了两款工具:SOCI Index Builder和SOCI Snapshotter。

SOCI技术概述

SOCI是AWS在2022年发布的开源技术,旨在实现Open Container Initiative (OCI)镜像层的延迟加载,而无需修改最终的镜像文件。SOCI通过在构建OCI镜像时生成一个单独的SOCI索引文件来实现这一功能。该索引文件包含压缩层的目录表,允许容器运行时通过范围请求从注册表中独立获取特定文件,而无需下载整个镜像层。为了简化SOCI索引的创建,AWS还发布了SOCI Snapshotter工具。

SOCI Snapshotter的作用

SOCI Snapshotter是containerd的一个快照插件。Containerd是管理容器生命周期的运行时,它使用快照器来管理容器文件系统。与默认的OverlayFS快照器不同,SOCI Snapshotter会下载SOCI索引文件,并利用它从压缩镜像层中下载特定部分(称为“span”)。要使用这一功能,客户必须使用Amazon ECS和AWS Fargate。

自动启用SOCI Snapshotter

在发布时,使用Linux平台版本1.4.0和X86_64架构的AWS Fargate上的Amazon ECS任务将自动默认使用SOCI Snapshotter,前提是任务中的所有镜像都具备SOCI索引。此外,镜像必须存储在支持SOCI索引的注册表中,目前仅限于Amazon ECR私有注册表。通过Amazon ECR,SOCI索引可以与原始OCI镜像文件同时添加,也可以通过CLI或AWS SOCI Index Builder工具在镜像上传后异步生成。

AWS SOCI Index Builder

AWS SOCI Index Builder是一个预配置的AWS CloudFormation堆栈,它通过EventBridge监听Amazon ECR的推送事件,并异步为上传的镜像生成SOCI索引。

当前限制与替代方案

目前,SOCI索引仅支持私有ECR注册表,因此其优势仅限于AWS生态系统,并且仅适用于大于250MB的镜像。在AWS之外,延迟加载OCI镜像的替代方案包括Nydus、OverlayBD和Stargz。这些插件是containerd的非核心项目,其中Stargz为SOCI Snapshotter项目奠定了基础。

社区反馈

SOCI索引带来的改进受到了社区的欢迎。有用户表示,启动时间从50秒缩短到了14秒。然而,也有用户报告称,在某些情况下启动时间有所增加,特别是在需要下载未预先加载的块时。

更多信息

有关SOCI索引及其在AWS ECS中的使用的更多信息,可以参考AWS Fargate用户指南

阅读 42
0 条评论