Dragonfly 社区技术分享|Nydus 远端转换缓存实现

Nydus 容器镜像加速服务 - 架构设计与技术文档 Nydus 是一个高性能容器镜像加速服务,由 Rust 语言实现。它通过在 RAFS(Registry Acceleration File System)格式上实现内容寻址文件系统,显著提升容器启动速度、降低存储和网络带宽消耗。核心优势:快速启动:秒级容器启动,毫秒级函数计算代码包加载按需加载:以 chunk 为单位按需下载镜像数据节省资源:chunk 级别数据去重,跨层/跨镜像降低存储、传输和内存成本端到端安全:数据完整性验证,可检测供应链攻击。 阅读详情

9a2a5e6de94083669a5d52826545493b.gif

在 2023 年的开源活动中,于强同学参加并负责了 Nydus 开源存储构建与分发支持课题的相关工作。

大家好!我是来自西北工业大学的于强,在开源之夏 2023 中报名参与了 Nydus 项目,并在导师的帮助下顺利完成了题目。通过此次活动,不仅对容器和镜像的底层技术有了更进一步的了解,也体验了如何开始参与一个开源项目。

Nydus GitHub:

https://github.com/dragonflyoss/nydus

1

关于 Nydus & Acceleration Service

1.1 Nydus

Nydus 镜像加速框架[1] 项目是 CNCF[2] 开源项目 Dragonfly[3] 的子项目,它是对 OCI 镜像格式的探索改进, Nydus 提供了容器镜像与多种数据的按需加载的能力,它已在生产环境支撑了每日百万级别的容器创建,将容器或代码包的端到端冷启动时间从分钟级降低到了秒级。Nydus 目前由蚂蚁集团、阿里云、字节跳动联合研发,也是 Kata Containers 与 Linux 内核态原生支持的镜像加速方案。

1.2 Acceleration Service  

加速镜像格式和普通镜像格式不同,构建或转换步骤是必须的,可以使用 Buildkit[4] 从 Dockerfile 直接构建加速镜像,也可以使用 Nerdctl[5] 或 Nydusify[6] 转换工具。为了让 Harbor[7] 进一步支持用户透明地使用加速镜像, Harbor 的子项目 Acceleration Service[8] 诞生了,Acceleration Service 为 Harbor 提供了自动转换加速镜像的能力。

Acceleration Service 作为通用的加速镜像转换框架,提供了两种转换服务:

  • Acceld 是一个通过 Harbor Webhook[9] 扩展的服务,它是一个通用的加速镜像转换框架。当用户推送镜像时,Harbor 向该服务发送 Webhook 请求,通过其集成的 Nydus、eStargz[10] 等转换驱动完成镜像的转换。 

  • AccelCtl 是一个 CLI 服务,指定源镜像后同样通过集成的转换驱动完成一次加速镜像转换。 

Nydusify 是 Nydus 生态提供的工具,可用于转换、挂载、校验 Nydus 镜像,其中 Convert 子命令使用了  Acceleration Service 项目提供的 Go Package ,以实现从 Docker / OCI 镜像到 Nydus 镜像的转换。

2

Issue 描述

容器镜像是由 manifest 、config 和若干 layer 组成,容器镜像示意:

c69e83663d8fc6a2b1f16649dc290876.png

  • layer 文件一般是 tar 包或者压缩后的 tar 包,包含镜像数据文件,多个 layer 文件共同组成一个完整的根文件系统(也就是从该镜像启动容器后,进入容器中看到的文件系统)。 

  • config 文件是一个 JSON 文件,包含镜像的一些配置信息,比如镜像时间、修改记录、环境变量、镜像的启动命令等等。

  • manifest 文件也是一个 JSON 文件,可以看作是镜像文件的清单,标识了镜像包含了哪些 layer 文件和哪个 config 文件。

  • index 文件也是一个可选的 JSON 文件,可以被认为是 manifest 的 manifest ,用来索引多个不同架构平台的 image 镜像。

而不同的容器镜像之间可能有相同的镜像层,下图示意了通过 dockerfile 创建的过程,假如存在另一个镜像在构建的时候,以相同的 FROM golang:1.20-alpine 命令作为 base layer ,或者是使用已有的 base image ,那么这两个镜像便包含相同的 image layer 。

632f7e7cd27cab5274eeb1818a40ebda.png

当 Acceld 进行加速镜像转换时,事实上是需要通过 containerd 的 Converter[11] ,通过指定的转换驱动,对源镜像的每一层 layer、镜像的 manifest 和 config 进行转换,从而完成整个容器镜像的转换。

当前的问题是某些镜像可能存在相同的镜像层,对于已经转换过的镜像层,仍然会进行重复且不必要的镜像层转换,我需要为 Acceleration Service 提供转换缓存的功能并将缓存功能集成到 Nydusify 的 Convert 子命令中,使得对于某些已经转换后的镜像层不必再度转换。

在用户 Push 镜像后,Acceleration Service 创建加速镜像转换任务,它需要先拉取原始镜像数据,转换完成后将加速镜像 Push 回 Harbor ,Acceleration Service 需要支持本地与远端两种缓存机制:

  • 本地缓存:

    用于缓存源镜像层,避免相同镜像层的重复拉取;

  • 远端缓存:

    用于缓存转换后的镜像层,避免相同镜像层的重复转换。

3

我的工作

对于当前的镜像转换框架,我们将框架内的转换工作增添了拉取缓存、更新缓存、推送缓存的逻辑,并对原有的拉取源镜像、转换源镜像进行修改,使其可以跳过不必要的重复的镜像层,转换工作示意图如下:

2e9b3c6b898658c2e9f9475a711191d9.png

3.1  远端缓存存储实现

首先我们使用了 cache manifest 来存储在某个 platform 下的已转换过的镜像 layer 数据,随后使用 cache index 来存储多个 platform 下的 cache manifest ,缓存会伴随相同镜像,并以指定的 tag 后缀存入 Harbor 同一 repository 下(若不指定 tag ,则表示禁用缓存),下图为 nginx 镜像以及 nginx 缓存在 Harbor 中的存储形式。

7c41e20fb81c232beb5cfefe7333317f.png

cache image index,存储了不同 platform 的 cache manifest。cache image index 示例如下:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.index.v1+json",
  "manifests": [
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:4778928307d551db03197c8458c2d25f5c1fe4925e8a3da3f0516400cbf2234f",
      "size": 693,
      "platform": {
        "architecture": "arm64",
        "os": "linux",
        "variant": "v8"
      }
    },
    {
      "mediaType": "application/vnd.oci.image.manifest.v1+json",
      "digest": "sha256:e2924242732b3cf0fffa7c5af813f135d72fd2e3b05ab02b4e3f0190fbd6738e",
      "size": 693,
      "platform": {
        "architecture": "amd64",
        "os": "linux"
      }
    }
  ]
}

cache manifest 中的 layer 层记录了某个 repository 在某个 platform 下的缓存层,其中 layer 的 Digest 记录了转换后的 layer 的 sha256 摘要值,这也是一个镜像层的唯一标识, layer 的 Annotation 中记录了 Layer 的一些附属信息,其中 containerd.io/snapshot/nydus-source-digest 字段记录了该层未被转换前的源镜像层, cache manifest 示例如下:

{
  "schemaVersion": 2,
  "mediaType": "application/vnd.oci.image.manifest.v1+json",
  "config": {
    "mediaType": "application/vnd.oci.image.config.v1+json",
    "digest": "sha256:44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a",
    "size": 2
  },
  "layers": [
    {
      "mediaType": "application/vnd.oci.image.layer.nydus.blob.v1",
      "digest": "sha256:a4003a6f4a4dccb6e2d535d6d047b12fbb1e5a447fb7ac8994e2a8e027a5608d",
      "size": 4299951,
      "annotations": {
        "containerd.io/snapshot/nydus-blob": "true",
        "containerd.io/snapshot/nydus-source-digest": "sha256:af09961d4a43b504efc76e38b50918977c28be73eeb8b926247783a00e8b9f2f"
      }
    }
  ]
}

3.2  Fetch,Update,Push cache

Remote Cache 作为单独的 module ,Converter 模块在转换过程前后可以使用以下接口来操作缓存:

  • Get 根据源镜像层 Digest 获取转换后镜像层 Digest

  • Set 向 cache 中增加某一条缓存记录信息

  • Update 更新 cache 中的缓存记录信息

  • Fetch 从远端拉取 cache manifest 并写入 cache 中

  • Push 将本地的缓存记录推送到 Harbor 远端

结合上面转换流程图,对于缓存的操作可以概括为:Fetch -> Convert -> Fetch -> Update -> Push。

  • Fetch (第一次) 拉取缓存,用于源镜像拉取与镜像转换服务;

  • Convert 通过 wrap 后的 Info 、 Update 等方法,在转换过程中使用缓存,避免无用的镜像层转换;

  • Fetch (第二次) 重新拉取缓存,避免本地转换时间久,远端缓存已被其他转换服务更新;

  • Update 根据重新拉取的缓存和在转换过程中新增加的缓存记录,通过 LRU 的淘汰策略,更新缓存记录,示意如下:

cde1ceb334954996139527ed7f293f3f.png

  • Push 将更新后的缓存推送到远端。

3.3  Fetch Source Image and Convert with Cache

3.3.1 避免相同镜像层拉取

在拉取源镜像之前,Converter 会先尝试拉取同一 repository 下的缓存,若存在则从远端 fetch config 中指定的 platform 的 cache manifest ,并通过 Set 接口,将缓存记录存入本地,随后通过 wrap 后的 Info 和 Update 方法,得到源镜像层以及转换后 Nydus 的镜像层在本地已经存在的“假象”。

对源镜像层的拉取是分层进行,在拉取源镜像之前, containerd 会先检查本地是否已经存在需要拉取的镜像层,若存在则不拉取,借由缓存提供源镜像层已经存在的“假象”,拉取缓存可以避免重复的拉取。

3.3.2 避免相同镜像层重复转换

在 nydus snapshotter[12] 转换过程中,我们可以通过 wrap 后的 Info 方法来检查某个 layer 是否已经被转换过了,具体方法则是通过 Info 方法获取某个源镜像层的信息,随后检查镜像层的 label,如果存在 containerd.io/snapshot/nydus-source-digest 这样的 label ,表示该镜像层存在转换后的 Nydus 镜像层缓存,不必重新进行转换,随后直接通过 Info 方法得到的镜像层信息,返回转换后的 descriptor ,达到镜像已经完成转换的"假象",避免重复转换。

3.3.3 转换性能数据

下表是 wordpress 镜像前后两次转换的性能数据,第二次是基于 wordpress 镜像添加增量层(几 MB 数据)构建的新镜像,没有本地缓存,只命中远端缓存的情况:

c1729a192a3dacb63689279aec52142d.png

3.4 检查 filesystem 相同

Nydus 提供了两种不同的文件系统格式(rafs v5 & v6 ),若是在转换过程中检查到了不同的 fs version,则会触发 merge boostrap 失败,此时我们需要以不使用缓存进行 Nydus 加速图像转换,对此我们在设定了错误类型与返回码,并在 check_compatibility 函数检查是否 fs version 是否相同, Acceld 服务检查返回码来确定是否需要再次进行不使用缓存的转换。

4

总结

开源之夏截止至今, 我对 Nydus 社区已经有了一定的了解, 在这段时间中, 我能够清晰的感觉到自身在以下方面有了新的认知。

  • 代码规范的重要性

以前我对于代码规范性虽然有所了解,但是并没有太多深刻理解,觉得自己只要不随便命名,写上注释便足够,但是这段时间的学习与开发,特别是 mentor 对于我 PR 的 review 意见,让我深深意识到了我在这方面的缺陷,导师在 review 时会考虑代码规范性的方方面面,甚至包括 comment 是否足够清晰明了,我觉得这是我需要完善的第一步。 

  • 学会沟通

沟通在这段时间内显得非常重要,同时也感谢导师在这段时间内对我的悉心指导,因为我并不是非常熟悉 Go/Rust ,有些时候问题甚至会显得有些过于低级,但是导师仍然一一解答,并尽量抽时间为我 review 代码,同时这段时间的开发,让我更加熟悉了容器镜像格式, OCI 标准以及 containerd 等知识,让我以前非常松散的容器知识结构更加丰富饱满。

  • 如何与其他人协同工作

之前我在协同工作的时候,对于项目代码的维护并不规范。这种无序的协同会阻碍程序的开发,有的时候我们自己甚至需要回滚整个项目。这段时间的学习与经历,让我清晰地了解到,规范的项目是如何维护的,如何使用 git 更加高效的管理项目与功能的开发、修复,以及出现了问题如何与他人沟通,这对于我来说弥足珍贵。 

参考链接

[1].Nydus 镜像加速框架

https://www.cncf.io/

[2].CNCF

https://nydus.dev/

[3].Dragonfly

https://d7y.io/

[4].Buildkit

https://github.com/moby/buildkit/blob/master/docs/nydus.md

[5].Nerdctl 

https://github.com/containerd/nerdctl

[6]Nydusify

https://github.com/dragonflyoss/nydus/blob/master/docs/nydusify.md

[7].Harbor

https://goharbor.io/

[8].Acceleration Service

https://github.com/goharbor/acceleration-service

[9].WebHook 

https://goharbor.io/docs/1.10/working-with-projects/project-configuration/configure-webhooks/

[10].eStargz

https://github.com/containerd/stargz-snapshotter/blob/main/docs/estargz.md

[11].Converter

https://github.com/containerd/containerd/blob/main/images/converter/default.go

[12].Nydus-Snapshotter 

https://github.com/containerd/nydus-snapshotter

   推荐阅读   

d9ce49dd7d7b0ebcd482a678fecc2480.jpeg

Dragonfly 社区技术分享|Nydus Registry 鉴权与 Mount 改进

380a942648779e7ab6717c1a27fae9ff.jpeg

火山引擎基于 Dragonfly 加速实践

71a2d867c88520794eafa71ff2c13af0.png

Dragonfly 中 P2P 传输协议优化

ed6be16052e093caefb89c60c94bb0b5.png

Dragonfly 基于 P2P 的文件和镜像分发系统

587ff343997f0f70ab52d1ab1ce2d474.jpeg

Nydus: 优化 AI 场景下的容器镜像加载 Nydus 是一个自定义的文件系统格式(Rafs),专为容器镜像优化设计。它的核心特性是实现镜像文件的按需加载,这对于 AI 场景尤其有用。在 AI 的推理或训练过程中,镜像大小常常从几 GB 到几十 GB 不等,Nydus 可以显著提高这些大型镜像的加载效率。 阅读详情

相关推荐

分布式缓存系统架构进化:Dragonfly扩展为全新形态的龙蜥技术

随着技术的不断进步,分布式系统在处理大规模数据和高并发访问方面起着至关重要的作用。为了应对这一挑战,Dragonfly缓存系统架构经过全新升级,引入了一项名为龙蜥技术的扩展,以进一步提升其性能和可扩展性。龙蜥技术是一种基于分布式系统的缓存系统架构,它通过在多个节点之间分配数据和负载,实现了高效的数据访问和分布式计算。下面将详细介绍龙蜥技术的设计原理,并提供相应的源代码示例。

CxzLoop的博客 344

Nydus:加速容器启动的利器

Nydus 是由 Dragonfly 团队开发的一款高性能容器镜像服务,旨在通过优化容器镜像的加载和分发,显著提升容器的启动速度、降低网络带宽和存储成本,并增强数据完整性。Nydus 实现了基于 RAFS 格式的内容寻址文件系统,是对当前 OCI 镜像规范的重大改进。 Nydus 的核心优势在于其能够实现秒级的容器启动速度,尤其是在处理大型 OCI 镜像时,其性能提升尤为明显。通过 Nydus,

gitblog_00781的博客 1194

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 343

阿里云、蚂蚁开源 Nydus——容器镜像加速服务

近日,Dragonfly 项目引入了一个容器镜像加速服务 nydus。据悉,nydus 是由阿里云和蚂蚁集团的工程师合作开发,并大规模部署在内部的生产环境中。 据Dragonfly 发布的消息,在其的测试中, nydus 能够把常见镜像的启动时间,从数分钟缩短到数秒钟。另外,容器运行时数据一致性校验方面,nydus 镜像不会被解压到本地,同时可以对每一次数据访问进行校验,如果数据被篡改,则可以从远端数据源重新拉取。 nydus 通过优化现有的 OCI 镜像标准格式提供: 容器镜像按需下载,用户不.

寒冰屋的专栏 2699

AutoDL上传数据详细步骤(自己用的步骤,可能没有其他大佬用的那么高级)

AutoDL上传数据详细步骤(自己用的步骤,可能没有其他大佬用的那么高级)

孟孟单单的博客 7万+

【杰理AC696X】ADKEY复用指示灯不定时出现灯不亮或按键失灵的问题

测试SDK版本:《ac696n_soundbox_sdk_v1.5.0-20211217》ADKEY复用指示灯的做法多用于蓝牙小音箱,IC引脚越来越少,复用也就用的越多了,不过,在使用前应评估好功能,因为复用的做法,肯定会牺牲点东西的,如果体验感啥的。 比如这个图,(V-)按键按下时,LED是会一直导通发光的,按不同阻值的按键还有亮度不一致的问题,这样的问题有的客户是不接受的,这就要另寻他法了。某天调好案子,放在一边测试时,发现指示灯不亮了,按键也不起作用,想起之前AC692系列也有类似的问题,很快就定位到

xx842678的博客 1656

Nydus容器镜像加速能力并集成到nerdctl(实验中。。。。。。)

内容相关 :nerdctl docker rootfs nydus

啊阿啊啊啊杨的博客 1560

ROS2前置基础教程 | 小鱼教你用CMake依赖查找流程

上面我们用g++、make、cmake三种方式来编译ros2的C++节点。用cmake虽然成功了,但是CMakeLists.txt的内容依然非常的臃肿,我们需要将其进一步的简化。将上面的CmakLists.txt改成下面的样子 接着继续生成和编译 是不是非常的神奇,为什么可以浓缩成那么短的几句指令呢?find_package查找路径对应的环境变量如下。 打开终端,输入指令: 结果 观察PATH变量,你会发现赫然在其中,中的路径如果以或结尾,则自动回退到上一级目录,接着检查这些目录下的 cmake找到这些目录

生活不止眼前的苟且 7162

Dragonfly单机部署比redis快25倍的缓存中间件

Dragonfly 是一款高性能的缓存中间件,与 Redis 和 Memcached API 完全兼容,无缝对接(意思就是开发人员直接改一下配置文件的链接地址即可,把他当redis用)。Dragonfly 在多线程、无共享架构之上实现了新颖的算法(2Q算法)和数据结构(Dash稳定吗hash结构)。因此,与 Redis 相比,Dragonfly 的性能达到了 x25,并且在单个实例上支持数百万 QPS。Dragonfly 的核心特性使其成为经济高效、高性能且易于使用的 Redis 替代品。

qq_39234840的博客 4643

[特殊字符] 智能补货(AI-driven Replenishment)完整实施方案

补货量=预测需求+安全库存−当前库存补货量 = 预测需求 + 安全库存 - 当前库存补货量=预测需求+安全库存−当前库存。:基于 LSTM/Transformer 预测未来 30/60/90 天的销量。

nbsaas-boot基于Request-Response的企业级快速开发框架 967

从0到1构建数据分析AI Agent:数据采集、洞察生成与报告自动化

在企业数字化转型的今天,数据分析师80%的时间被消耗在重复取数、数据清洗、报表排版等低价值劳动上,真正用于深度业务洞察和决策支持的时间不足20%。本文将从核心概念、技术原理、代码实现、落地实践全维度,教你从0到1搭建一套完整的数据分析AI Agent系统,实现「用户用自然语言提需求→Agent自动采集多源数据→AI自动挖掘业务洞察→自动生成符合业务要求的多格式报告」的全链路自动化,平均可将需求响应速度从天级压缩到分钟级,释放70%以上的分析师人力成本。

AI Python 编程之道的博客 472

Nydus 懒加载镜像配置与实践

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !据统计容器中的大部分文件不会被使用。根据这一特征,Nydus 自定义了 Rafs 格式的文件系统,实现了镜像文件的按需加载,以解决大镜像导致的启动慢和占用存储的问题。而在 AI 场景下,无论是推理还是训练,镜像常常都是几个 G 起步,甚至几十个 G,Nydus 非常适用。本篇主要是一些具体操作步骤,用于快速配置镜像懒...

easylife206的专栏 1664

3 ATK2(AUTOSAR OS)代码移植-目标硬件及编译环境简介

该部分介绍ATK2代码移植的目标硬件以及编译环境

xiaoduanduansad的博客 719

容器镜像基础(nydus)

包括 nydus 的基本概念、架构和容器镜像加速使用方法。

分享观点和经验,欢迎交流。 1663

黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)

本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。

黑猫奥利奥的博客 3555

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

全世界最快的内存数据库Dragonfly

Dragonfly是一种针对现代应用程序负荷需求而构建的内存数据库,完全兼容Redis和Memcached的 API,迁移时无需修改任何代码。相比于这些传统的内存数据库,Dragonfly提供了其25倍的吞吐量,高缓存命中率和低尾延迟,同时Dragonfly还能轻松进行垂直扩展

weixin_40381772的博客 6495

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Dragonfly 社区技术分享|Nydus Registry 鉴权与 Mount 改进

在 2023 年的开源活动中,李锐同学参加了 Nydus 容器开源生态集成课题的相关工作。大家好!我是来自国防科大的李锐,在开源之夏 2023 中报名参与了 Nydus 项目,在导师的指导下完成了社区的两个改进性题目,体验了如何从零开始参与一个开源项目。Nydus GitHub:https://github.com/dragonflyoss/nydus01容器运行时与镜像1.1OCI 容器运行时...

金融级分布式架构 470

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Nydus 加速镜像一致性校验增强

这是去年(2022)的夏令营活动中,王瑞同学参加 Nydus 开源项目的总结,主要介绍了为 Nydus 支持镜像与文件系统一致性校验所做的相关工作。

金融级分布式架构 620

Nydus 镜像扫描加速

镜像扫描的原因与内容容器镜像是当前容器/软件分发的基础,里面包含了容器隔离环境以及软件执行环境的相关内容。因此保障其安全性变得十分重要。镜像扫描即是要扫描镜像中的所有内容,及时发现可能包含的安全漏洞或者隐私泄露。1. 安全漏洞。包括系统软件包和应用软件库中可能存在的安全漏洞。可以通过比对镜像中这些库/软件包的来源、版本等与 CVE 数据库中报告的漏洞的包的来源、版本来定位可能存在的安全漏洞。2. 配置。包括镜像运行的环境配置和镜像中相关内容组合可能带来的问题。

BASK2311的博客 782

终极指南:Nydus容器镜像服务核心功能与架构解析

Nydus(GitHub 加速计划)是一个高性能容器镜像服务,通过创新的镜像格式和分发机制,显著提升容器启动速度并降低存储成本。本文将深入解析Nydus的核心功能、架构设计及实际应用价值,帮助开发者快速掌握这一容器优化利器。 ## 🚀 什么是Nydus容器镜像服务? Nydus作为Dragonfly镜像服务的核心组件,采用用户空间文件系统(FUSE/VirtIO)实现,通过**按需加载**和

gitblog_00309的博客 972

容器启动加速-nydus

Nydus是一个镜像加速器,主要通过容器启动时懒加载镜像提高启动速度, 大镜像可以秒级启动,后续的读写通过COW方式。以下是nydus的几个标签: - Nydus是蚂蚁、阿里云、字节等共建的开源容器镜像加速项目 - CNCF孵化的项目Dragonfly中的一个子项目 - 新的镜像格式,不同于oci - 良好的生态,兼容containerd、k8s、harbor、buildkit -- 从构建、存储、部署、到CI集成,有丰富的解决方案

Moolight_shadow的专栏 3620

Nerdctl 原生支持 Nydus 加速镜像

Containerd 是当前最流行的容器运行时之一,Nerdctl 作为 Containerd 的社区中的核心项目提供了完善的使用体验。它们都是容器领域中非常重要的基础项目。通过本次项目的开发工作,我逐渐了解了 OCI 镜像的组成部分,每部分的作用和基本格式;知道了以及 Nydus 镜像和 OCI 镜像之间的差异,并且理解了 Nydus镜像中 Blob layer 和 Bootstrap layer 之间的区别;能够通过检查本地镜像相关文件排查一些简单的程序 bug。

金融级分布式架构 1621

Nydus | 容器镜像基础

Nydus | 容器镜像基础

金融级分布式架构 1018

Nydus Acceld 去 Containerd 服务化

丁亚东同学为大家带来他在 GitLink 编程夏令营中参加Nydus加速镜像的统一转换框架所做的相关工作分享。大家好!我是来自大连理工大学的 2023 级研究生丁亚东,GitHub ID 是 @Desiki-high。硕士期间主要研究方向是边缘计算,并且十分热爱云原生技术。Nydus GitHub:https://github.com/dragonflyoss/nydus01课题背景1.1O...

金融级分布式架构 572

适用场景全新升级!扩展 Dragonfly2 作为分布式缓存系统架构 | 龙蜥技术

在有些场景中,分发的数据是某个节点上生成的,不存在一个远端的源地址,所以我们希望 Dragonfly 能够增加对这种场景的支持。本文也介绍了其测试方法和效果,欢迎点击观看~

weixin_60347558的博客 747
上一篇: Play with US!隐语社区嘉年华,属于技术咖们的“年度盛典”——报名通道已开启...
下一篇: 全票通过!多语言序列化框架 Fury 正式加入 Apache 孵化器
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值