学习镜像加速技术Nydus

370 阅读1分钟

概述

镜像下载一直是容器启动速度的瓶颈,镜像的本质是一个压缩文件,那么常见的加快压缩文件下载的方式是P2P下载。除此之外,LazyLoad也符合镜像使用的特点。

细节

Nydus架构 on fuse

image.png

当容器镜像使用Nydus镜像时,文件系统的访问转换为了基于FUSE协议的访问(相当于客户端),而FUSE的服务端则是部署在Node上的image-service,它接收到客户端的请求后,如果文件存在,则在用户态进行文件访问,否则会从镜像存储后端下载镜像层。这样做有诸多好处:

  • 无需将整个大镜像下载,只需要符合CRI镜像规范,就可以启动容器,使得容器启动时间降低至几秒
  • 镜像文件不只是可以存储在registry里了,还可以存储在其他格式的后端存储,如对象存储
  • 镜像下载的传输可以进行P2P优化
  • 镜像压缩方式克服了tar格式的陈旧包袱

image.png

OCI 镜像

  • anifest:包含配置信息和layer的信息
  • image index:比anifest更复杂的索引信息
  • filesystem layer:如何将容器的文件系统进行序列化,如何创建和使用这些layer

资料

developer.aliyun.com/article/776…

developer.aliyun.com/article/945…

cloud.tencent.com/developer/a…