让容器应用管理更快更安全,Dragonfly 发布 Nydus 容器镜像加速服务
镜像对容器部署的挑战
在容器的生产实践中,偏小的容器镜像能够很快地部署启动。当应用的镜像达到几个 GB 以上的时候,在节点上下载镜像通常会消耗大量的时间。Dragonfly 通过引入 P2P 网络有效提升了容器镜像大规模分发的效率。然而,用户还是必须等待镜像数据完整下载到本地,然后才能创建自己的容器。我们希望进一步缩减镜像下载的时间,让用户能够更快地部署容器应用。同时,如何更好地保护用户数据,也是容器行业近年来的重要关注点。
容器镜像加速服务 Nydus 地址:
https://github.com/dragonflyoss/image-service
Nydus: Dragonfly 的容器镜像服务
Nydus 项目优化了现有的 OCI 镜像标准格式,并以此设计了一个用户态的文件系统。通过这些优化,Nydus 能够提供这些特性:
容器镜像按需下载,用户不再需要下载完整镜像就能启动容器 块级别的镜像数据去重,最大限度为用户节省存储资源 镜像只有最终可用的数据,不需要保存和下载过期数据 端到端的数据一致性校验,为用户提供更好的数据保护 兼容 OCI 分发标准和 artifacts 标准,开箱即可用 支持不同的镜像存储后端,镜像数据不只可以存放在镜像仓库,还可以放到 NAS 或者类似 S3 的对象存储上 与 Dragonfly 的良好集成
Nydus 能为用户带来什么?
用户如果部署了 Nydus 镜像服务,最直观的一个感受就是,容器启动变快了,从以前的明显时间消耗,变成了几乎瞬间就能启动起来。在我们的测试中, Nydus 能够把常见镜像的启动时间,从数分钟缩短到数秒钟。
另外一个不那么明显但也很重要的改进,是 Nydus 能够为用户提供容器运行时数据一致性校验。在传统的镜像中,镜像数据会先被解压到本地文件系统,再由容器应用去访问使用。解压前,镜像数据是完整校验的。但是解压之后,镜像数据不再能够被校验。这带来的一个问题就是,如果解压后的镜像数据被无意或恶意地修改,用户是无法感知的。而 Nydus 镜像不会被解压到本地,同时可以对每一次数据访问进行校验,如果数据被篡改,则可以从远端数据源重新拉取。
未来规划
前面我们介绍了 Nydus 的架构和优点。在过去的一年里,我们和内部的产品团队一起致力于让 Nydus 项目更稳定、安全和易用。在把 Nydus 项目开源之后,我们将会更关注广泛的云原生容器生态。我们的愿景是,当用户在集群中部署 Dragonfly 和 Nydus 服务的时候,无论镜像大小,用户都能够方便快捷地运行他们的容器应用,同时不需要为容器镜像的数据安全性担忧。
OCI 社区容器镜像标准
我们已经在内部生产环境中大规模部署
Nydus,而我们坚信对 OCI 镜像标准的改进需要广泛的社区合作。为此,我们积极地参与了 OCI 社区关于下一代镜像标准的讨论,并发现
Nydus 能够广泛地符合 OCI 社区对下一代镜像格式的要求。所以我们提议把 Nydus 作为 OCI
社区下一代镜像格式的示例实现,并期待和更多的云原生行业领导者们一起推进下一代镜像标准的制定和实现。
FAQ
Q1:现有的 OCI 镜像标准有什么问题?
附录:OClv2 镜像标准
从 2020 年 6 月开始,OCI 社区花了一个多月时间密集讨论了当前 OCI 镜像标准的缺陷,以及 OCIv2 镜像格式需要满足哪些要求。OCIv2 在这里只是一个宣传命名,实际上 OCIv2 是当前 OCI 镜像标准的改进,而不会是一个全新的镜像标准。
更少的重复数据 可重建的镜像格式 明确的更少的文件系统元数据 可以 mount 的文件系统格式 镜像内容列表 镜像数据按需加载 可扩展性 可校验和/或可修复 更少的上传数据 可以工作在不可信存储上
往期精彩回顾: