概述
镜像下载一直是容器启动速度的瓶颈,镜像的本质是一个压缩文件,那么常见的加快压缩文件下载的方式是P2P下载。除此之外,LazyLoad也符合镜像使用的特点。
细节
Nydus架构 on fuse
当容器镜像使用Nydus镜像时,文件系统的访问转换为了基于FUSE协议的访问(相当于客户端),而FUSE的服务端则是部署在Node上的image-service,它接收到客户端的请求后,如果文件存在,则在用户态进行文件访问,否则会从镜像存储后端下载镜像层。这样做有诸多好处:
- 无需将整个大镜像下载,只需要符合CRI镜像规范,就可以启动容器,使得容器启动时间降低至几秒
- 镜像文件不只是可以存储在registry里了,还可以存储在其他格式的后端存储,如对象存储
- 镜像下载的传输可以进行P2P优化
- 镜像压缩方式克服了tar格式的陈旧包袱
OCI 镜像
- anifest:包含配置信息和layer的信息
- image index:比anifest更复杂的索引信息
- filesystem layer:如何将容器的文件系统进行序列化,如何创建和使用这些layer
资料
developer.aliyun.com/article/776…