Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Dragonfly发布Nydus容器镜像加速服务

Dragonfly发布Nydus容器镜像加速服务

作者头像
CNCF
发布于 2020-11-02 03:20:49
发布于 2020-11-02 03:20:49
2.3K0
举报
文章被收录于专栏:CNCFCNCF

镜像对容器部署的挑战

在容器的生产实践中,偏小的容器镜像能够很快的部署启动。当应用的镜像达到几个GB以上的时候,在节点上下载镜像通常会消耗大量的时间。Dragonfly 通过引入 P2P 网络有效的提升了容器镜像大规模分发的效率。然而,用户还是必须等待镜像数据完整下载到本地,然后才能创建自己的容器。我们希望进一步缩减镜像下载的时间,让用户能够更快地部署容器应用。同时,如何更好的保护用户的数据,也是容器行业近年来的重要关注点。

为此,我们为Dragonfly项目引入了一个容器镜像加速服务 nydus 。nydus 能够极大缩短镜像下载时间,并提供端到端的镜像数据一致性校验,从而让用户能够更安全快捷地管理容器应用。nydus 由阿里云和蚂蚁集团的工程师合作开发,并大规模部署在内部的生产环境中。作为云原生生态的一部分, nydus 在生产环境的优秀表现,让我们有信心现在将项目开源,让更多的容器用户能够体验到容器快速启动和安全加载方面的能力。

https://github.com/dragonflyoss/image-service

Nydus: Dragonfly 的容器镜像服务

nydus 项目优化了现有的 OCI 镜像标准格式,并以此设计了一个用户态的文件系统。通过这些优化,nydus 能够提供这些特性:

  • 容器镜像按需下载,用户不再需要下载完整镜像就能启动容器
  • 块级别的镜像数据去重,最大限度为用户节省存储资源
  • 镜像只有最终可用的数据,不需要保存和下载过期数据
  • 端到端的数据一致性校验,为用户提供更好的数据保护
  • 兼容 OCI 分发标准和 artifacts 标准,开箱即可用
  • 支持不同的镜像存储后端,镜像数据不只可以存放在镜像仓库,还可以放到 NAS 或者类似 S3 的对象存储
  • 与 Dragonfly 的良好集成

架构上, nydus 主要包含一个新的镜像格式,和一个负责解析容器镜像的 FUSE 用户态文件系统进程。

nydus 能够解析 FUSE 或者 virtiofs 协议来支持传统的 runc 容器或者 Kata 容器。容器仓库,OSS 对象存储,NAS,以及 Dragonfly 的超级节点和 peer 节点都可以作为 nydus 的镜像数据源。同时, nydus 还可以配置一个本地缓存,从而避免每次启动都从远端数据源拉取数据。

镜像格式方面, nydus 把一个容器镜像分成元数据和数据两层。其中元数据层是一颗自校验的哈希树。每个文件和目录都是哈希树中的一个附带哈希值的节点。一个文件节点的哈希值是由文件的数据确定,一个目录节点的哈希值则是由该目录下所有文件和目录的哈希值确定。每个文件的数据被按照固定大小切片并保存到数据层中。数据切片可以在不同文件以及不同镜像中的不同文件共享。

Nydus 能为用户带来什么?

用户如果部署了 nydus 镜像服务,最直观的一个感受就是,容器启动变快了,从以前的明显时间消耗,变成了几乎瞬间就能启动起来。在我们的测试中, nydus 能够把常见镜像的启动时间,从数分钟缩短到数秒钟。

另外一个不那么明显但也很重要的改进,是 nydus 能够为用户提供容器运行时数据一致性校验。在传统的镜像中,镜像数据会先被解压到本地文件系统,再由容器应用去访问使用。解压前,镜像数据是完整校验的。但是解压之后,镜像数据不再能够被校验。这带来的一个问题就是,如果解压后的镜像数据被无意或者恶意地修改,用户是无法感知的。而 nydus 镜像不会被解压到本地,同时可以对每一次数据访问进行校验,如果数据被篡改,则可以从远端数据源重新拉取。

未来规划

前面我们介绍了 nydus 的架构和优点。在过去的一年里,我们和内部的产品团队一起致力于让 nydus 项目更稳定,安全和易用。在把 nydus 项目开源之后,我们将会更关注广泛的云原生容器生态。我们的愿景是,当用户在集群中部署 Dragonfly 和 nydus 服务的时候,无论镜像大小,用户都能够方便快捷地运行他们的容器应用,同时不需要为容器镜像的数据安全性担忧。

OCI 社区容器镜像标准

虽然我们已经在内部生产环境中大规模部署 nydus,我们坚信对 OCI 镜像标准的改进需要广泛的社区合作。为此,我们积极地参与了 OCI 社区关于下一代镜像标准的讨论,并发现 nydus 能够广泛地符合 OCI 社区对下一代镜像格式的要求。所以我们提议把 nydus 作为 OCI 社区下一代镜像格式的示例实现,并期待和更多的云原生行业领导者们一起推进下一代镜像标准的制定和实现。

FAQ

Q: 现有的 OCI 镜像标准有什么问题?

  • SUSE 的 Aleksa Sarai 写过一个 blog (The Road to OCIv2 Images: What's Wrong with Tar?),详细地描述了现有 OCI 镜像标准的一系列问题,简单总结就是 OCI 镜像标准使用的 tar 格式太古老并不适合作为容器镜像格式。

Q: nydus 和 CRFS 有什么区别?

  • CRFS 是 GO build team 设计的一个镜像格式。二者在主要设计思想上非常相似。细节上, nydus 支持块级别的数据去重和端到端的数据一致性校验,可以说是在 CRFS 的 stargz 格式上的进一步改进。

Q: nydus 和 Azure 的 Teleport 有什么区别?

  • Azure Teleport 更像是现有 OCI 镜像标准在基于 SMB 文件共享协议的 snapshotter 上的一个部署实现,能够支持容器镜像数据按需下载,但保留了所有目前 OCI 镜像 tar 格式的缺陷。相对的, nydus 抛弃了过时的 tar 格式,并使用 merkle tree 格式来提供更多的高级特性。

Q: 如果运行基于 nydus 的容器的时候网络断了怎么办?

  • 使用现有 OCI 镜像的时候,如果在容器镜像还没有完整下载的时候网络断了,容器会一开始就无法启动。nydus 很大程度上改变了容器启动的流程,用户不需要再等待镜像数据完整下载就能启动容器。而容器运行时如果网络断了,将无法访问没有下载到本地的镜像数据。nydus 支持在容器启动后在后台下载容器镜像数据,所以当容器镜像数据完整下载到本地后,基于 nydus 的容器也不会受到网络中断的影响。

附录:OCIv2 镜像标准

从 2020 年 6 月开始,OCI 社区花了一个多月时间密集讨论了当前 OCI 镜像标准的缺陷,以及 OCIv2 镜像格式需要满足哪些要求。OCIv2 在这里只是一个宣传命名,实际上 OCIv2 是当前 OCI 镜像标准的改进,而不会是一个全新的镜像标准。

这次镜像格式大讨论从一个邮件和一份共享文档开始,并促成了多次在线的 OCI 社区讨论会议。最后的结论也很鼓舞人心,OCIv2 镜像格式需要满足下列要求:

  • 更少的重复数据
  • 可重建的镜像格式
  • 明确的更少的文件系统元数据
  • 可以 mount 的文件系统格式
  • 镜像内容列表
  • 镜像数据按需加载
  • 可扩展性
  • 可校验和/或可修复
  • 更少的上传数据
  • 可以工作在不可信存储上

在这份共享文档中可以找到每一个要求的详细描述。我们全程参与了整个 OCIv2 镜像格式要求的讨论,并发现 nydus 很好地满足了全部的这些要求。这进一步促使我们开源 nydus 项目来为社区讨论提供一个工作的代码基础。

https://hackmd.io/@cyphar/ociv2-brainstorm

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-10-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ImageApparate(幻影)镜像加速服务让镜像分发效率提升 5-10 倍
李昂,腾讯高级开发工程师,主要关注容器存储和镜像存储相关领域,目前主要负责腾讯容器镜像服务和镜像存储加速系统的研发和设计工作。 李志宇,腾讯云后台开发工程师。负责腾讯云 TKE 集群节点和运行时相关的工作,包括 containerd、docker 等容器运行时组件的定制开发和问题排查。 洪志国,腾讯云架构师,负责 TKE 产品容器运行时,K8s,容器网络,mesh 数据面等基础组件研发。 背景 在业务普遍已经完成容器化的大环境下,不同的业务场景对于容器启动需求也是不同的,在离线计算和一些需要快速增加计算资
腾讯云原生
2021/02/25
1.2K0
Dragonfly + Harbor实现的p2p镜像分发
超级节点充当CDN,同时调度每个对等者(peer)在他们之间传输文件块。dfget是P2P客户端,也称为对等者(peer),主要用于下载和共享文件块。
李鹤
2023/03/28
2K0
Dragonfly + Harbor实现的p2p镜像分发
知道吗?容器镜像也可以延迟拉取!
在容器的整个生命周期中,拉取镜像是最耗时的步骤之一。Harter 等人的研究[1]表明:
米开朗基杨
2020/08/25
2.3K0
知道吗?容器镜像也可以延迟拉取!
使用DragonFly进行智能镜像分发
Dragonfly 是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高文件传输的效率和速率,最大限度地利用网络带宽,尤其是在分发大量数据时,例如应用分发、缓存分发、日志分发和镜像分发。 在阿里巴巴,Dragonfly 每个月会被调用 20 亿次,分发的数据量高达 3.4PB。Dragonfly 已成为阿里巴巴基础设施中的重要一环。 尽管容器技术大部分时候简化了运维工作,但是它也带来了一些挑战:例如镜像分发的效率问题,尤其是必须在多个主机上复制镜像分发时。 Dragonfly 在这种场景下能够完美支持 Docker 和 PouchContainer。它也兼容其他格式的容器。相比原生方式,它能将容器分发速度提高 57 倍,并让 Registry 网络出口流量降低 99.5%。 Dragonfly 能让所有类型的文件、镜像或数据分发变得简单而经济。 更多请通过官方文档了解。
极客运维圈
2020/06/22
2K0
OCI 与容器镜像构建
2013 年 3 月 dotCloud 公司在 PyCon 上进行了 Docker 的首次展示,随后宣布开源。自此 Docker 开始被众人知晓,随后掀起了一股容器化的热潮。
Jintao Zhang
2021/11/16
1.9K0
云原生制品那些事(2):OCI 镜像规范
题图摄于故宫角楼 注:微信公众号不按照时间排序,请关注“亨利笔记”,并加星标以置顶,以免错过更新。 《Harbor权威指南》招募英文版翻译人员 本篇继续和大家说说镜像那些事,是连载之二,从《Harbor权威指南》一书节选的纯技术干货,敬请关注、转发和收藏。 第一篇:容器镜像的结构 第二篇:OCI 镜像规范 第三篇:OCI 制品 第四篇:Registry 的作用原理 《Harbor权威指南》目前当当网优惠中,点击下图直接购买。 1.5  OCI镜像规范 OCI 镜像规范是以 Docker 镜像规范 v2
Henry Zhang
2023/04/18
1.2K0
云原生制品那些事(2):OCI 镜像规范
运维锅总详解容器OCI规范
OCI是什么?OCI的镜像规范和运行时规范有哪些具体内容?Docker实现了OCI规范了吗?实现OCI规范的开源项目有哪些?OCI诞生背景及历史演进又有哪些内容?希望读完本文,能帮您解答这些疑惑!
锅总
2024/07/20
2860
运维锅总详解容器OCI规范
LWN:新的容器文件系统PuzzleFS!
差不多去年的时候,发布了一些旨在支持容器工作负载(container workload)的新文件系统类型。PuzzleFS是Ariel Miculas在2023年Kangrejos聚会上提出的一个新的选手,但它具有一些自己的特点,包括一种新颖的压缩机制和使用Rust编写的实现。
Linux阅码场
2023/10/17
3260
LWN:新的容器文件系统PuzzleFS!
Dragonfly v2.2.0 发布:Rust 客户端、P2P 升级、增强图片加速
今年 1 月,云原生计算基金会(CNCF)发布 了 Dragonfly 2.2.0 版,为这个开源的点对点(P2P)文件分发和镜像加速系统引入了几项重大改进。
深度学习与Python
2025/02/18
1110
Dragonfly v2.2.0 发布:Rust 客户端、P2P 升级、增强图片加速
容器技术的发展与基本原理
云原生引入了不少新的概念和思维方式,也影响了应用所采用的实现技术。容器是云原生应用的基础性技术,其颠覆了应用的开发、交付和运行模式,在云计算、互联网等领域得到了广泛应用。 本文选自《Harbor权威指南》一书,下面我们一同了解下容器的发展进程及基本原理。 容器技术的发展背景 在电子计算机刚出现时,由于硬件成本高昂,人们试图寻找能够多用户共享计算资源的方式,以提高资源利用率和降低成本。在20世纪60年代,基于硬件技术的主机虚拟化技术出现了。一台物理主机可以被划分为若干个小的机器,每个机器的硬件互不共享,并可
博文视点Broadview
2023/05/19
8990
容器技术的发展与基本原理
Docker容器镜像仓库存储原理(前世今身)与搬运技巧
在深入学习镜像之前我们需要知道镜像是如何(炼制/搓)成的(等同于构建镜像),当然是通过我们DockerFile一条条指令为镜像生成每一层,按照执行顺序镜像文件系统复写封装从下到上;
全栈工程师修炼指南
2022/09/29
3.5K0
Docker容器镜像仓库存储原理(前世今身)与搬运技巧
容器镜像仓库Harbor搭建步骤
Harbor 主要特性包括: 1. 基于角色的访问控制(RBAC):允许管理员根据用户的角色分配访问权限,确保不同的团队或项目能够按需访问其镜像资源,符合企业内部的安全策略和合规要求。 2. 管理用户界面:提供直观的 Web UI,便于用户管理和浏览镜像,以及进行权限配置、策略管理等操作。 3. AD/LDAP 集成:可以与现有的 Active Directory 或 LDAP 目录服务集成,实现用户身份验证和授权,简化用户管理流程。 4. 镜像复制:支持跨数据中心或跨云环境的镜像复制功能,有助于实现地理分布式部署和数据同步。 5. 镜像签名与验证:增强镜像的安全性,通过签名机制确保镜像的完整性和来源可信。 6. 安全扫描:集成了漏洞扫描功能,能够在推送或拉取镜像时自动扫描镜像中的已知安全漏洞,提高容器应用的安全性。 7. 日志与审计:记录操作日志,便于跟踪和审计,满足企业对于合规性的要求。 8. 多租户支持:为不同的团队或项目提供隔离的命名空间,确保资源不被误操作或非法访问。 9. 符合 OCI 标准:不仅支持 Docker 镜像,还兼容 OCI 规范的其他类型制品,适应更广泛的云原生生态。 Harbor 通过上述特性,为企业的容器化应用提供了从开发到生产的全生命周期管理方案,是构建企业级容器平台不可或缺的组件之一。用户可以通过命令行工具或图形界面与其交互,执行镜像的推送、拉取、删除等操作。
用户7353950
2024/06/04
2390
容器镜像仓库Harbor搭建步骤
Dragonfly 和 Nydus Mirror 模式集成实践
自 17 年开源以来,Dragonfly[1] 被许多大规模互联网公司选用并投入生产使用, 并在 18 年 10 月正式进入 CNCF,成为中国第三个进入 CNCF 沙箱级别的项目。 2020 年 4 月,CNCF 技术监督委员会(TOC)投票决定接受 Dragonfly 作为孵化级别的托管项目。 Dragonfly 多年生产实践经验打磨的下一代产品,它汲取了上一代 Dragonfly1.x 的优点并针对已知问题做了大量的优化。
CNCF
2022/11/28
1.1K0
Dragonfly 和 Nydus Mirror 模式集成实践
Harbor和Dragonfly双剑合璧 打造容器镜像运维新模式
上周传来好消息,由阿里巴巴发起的云原生开源项目Dragonfly,正式晋升为 CNCF(云原生计算基金会)孵化级别的托管项目,恭喜阿里的同学们!
CNCF
2020/04/18
2.6K0
才云开源 ormb:像管理 Docker 容器镜像一样管理机器学习模型
才云开源的基于镜像仓库的机器学习模型分发组件 ormb(OCI-Based Registry for ML/DL Model Bundle)能帮助企业像管理容器镜像一样管理机器学习模型。它不仅提供版本化的模型管理能力,还可利用符合 OCI 标准的容器镜像仓库存储和分发机器学习模型。通过 Harbor 2.0,它可以实现在多个镜像仓库间的同步,满足更多企业级需求。
我是阳明
2020/07/15
9930
云原生时代下的容器镜像安全(上)
Kubernetes 作为云原生的基石,为我们带来了极大的便利性,越来越多的公司也都将 Kubernetes 应用到了生产环境中。然而,在享受其带来的便利性的同时,我们也需要关注其中的一些安全隐患。
Jintao Zhang
2021/12/01
7330
云原生时代下的容器镜像安全(上)
【译】OCI镜像规范项目正式启动,致力于容器镜像标准的统一容器镜像是什么?如何做出贡献?
今天,我们迎来开放容器倡议(OCI)的新项目,OCI镜像规范。这意味着有一个在业界达成共识的项目,并且依靠着整个业界的强大技术实力,去规范和制定容器的构建、核实、签名以及命名标准。
阿杜
2018/08/06
9290
容器技术及其应用白皮书(上)-- 容器技术
图2.2 容器技术框架
shaonbean
2019/05/26
5.6K0
超越预期:Containerd 如何成为 K8s 的首选容器运行时
容器技术已经成为现代软件开发和部署的核心工具。通过容器,开发者可以创建轻量级、便携的运行环境,从而简化应用程序的开发、测试和部署流程。在容器技术的生态系统中,容器运行时扮演着至关重要的角色。本篇文章将探讨低级和高级容器运行时的区别,并解释为什么 Kubernetes 选择 containerd 作为其默认的容器运行时。此外,我们还将介绍三种与 containerd 相关的 CLI 工具:ctr、crictl 和 nerdctl。
米开朗基杨
2024/07/20
1.3K0
超越预期:Containerd 如何成为 K8s 的首选容器运行时
交易系统架构演进之路(六):容器化
微服务架构背景下,随着服务和服务实例的数量不断增加,如果依然用传统的方式部署、配置和管理这些服务进程,就会发现,越来越多的时间花在了管理部署和解决部署过程中出现的问题上了。比如,需要新增服务实例进行扩容,服务器环境搭建就挺费时间的。另外,很多人肯定会经历过,同一份代码的程序在测试环境跑得好好的,但到了生产环境就出错了。部署上线的时候,大部分问题其实都是运行环境和配置问题,开发和运维就为了解决这些问题花费了很多时间。
Keegan小钢
2021/03/10
1.5K0
交易系统架构演进之路(六):容器化
推荐阅读
相关推荐
ImageApparate(幻影)镜像加速服务让镜像分发效率提升 5-10 倍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档