在上一篇文章中详细介绍Anolis OS 是首个原生支持镜像加速 Linux 内核,Nydus 镜像加速服务重新优化了现有的 OCIv1 容器镜像格式,重新定义镜像的文件系统,数据与元数据分离,实现按需加载,本文作为使用 Nydus 的教程将详细介绍在 Anolis OS 上部署 Nydus 的过程,以帮助用户熟悉 Nydus 的基本使用方法。
一、部署环境本教程中使用的是阿里云上购买的 EC2 虚拟机,您也可以在本地或其他云环境中部署 Nydus。
操作系统:Anolis OS 8.4 (ANCK 64位) 内核版本:Linux 4.19 CPU:2 vCPU@3.5GHz 内存:8GB 软件依赖:Nydus 当前仅支持 Containerd,因此在需要使用 containerd 作为容器引擎龙蜥安装使用 containerd 的方法。
dnf --enablerepo Plus install -y containerd
二、安装 Nydus
龙蜥社区已经集成 Nydus 最新 Stable 稳定版本,推荐使用龙蜥集成的软件包安装 Nydus。如果需要安装指定版本的 Nydus,可以下载上游开源版本的代码包安装(以下两种安装方式任选一种即可)。
2.1 使用龙蜥集成的软件包dnf --enablerepo Plus install -y nydus-rs nydus-snapshotter
2.2 使用上游开源版本
- 下载 Nydus 的可执行文件。
从发布页面(见文末链接1)获取最新的压缩包,并解压。
wget https://github.com/dragonflyoss/image-service/releases/download/v2.1.0-alpha.4/nydus-static-v2.1.0-alpha.4-linux-amd64.tgz
tar -xzvf nydus-static-v2.1.0-alpha.4-linux-amd64.tgz
- 下载 Nydus Snapshotter 的可执行文件。
从发布页面(见文末链接2)获取最新的压缩包,并解压。
wget https://github.com/containerd/nydus-snapshotter/releases/download/v0.2.4/nydus-snapshotter-v0.2.4-x86_64.tgz
tar -xzvf nydus-snapshotter-v0.2.4-x86_64.tgz
mv nydus-snapshotter/containerd-nydus-grpc nydus-static/containerd-nydus-grpc
- 选择 Nydus 运行模式。
Nydus 加速框架支持了三种运行模式,以支持不同场景下的镜像按需加载:
- 通过 FUSE 提供给 RunC 这类容器运行时的按需加载能力,也是 Nydus 目前最常用的模式;
- 通过 VirtioFS 承载 FUSE 协议,支持基于 VM 的容器运行时,例如 Kata 等,为 VM Guest 里的容器提供 RootFS 按需加载能力;
- 通过内核态的 EROFS 只读文件系统提供 RootFS,目前 Nydus 的 EROFS 格式支持已经进入了 Linux 5.16 主线,其内核态缓存方案 erofs over fscache 也已经合入 Linux 5.19-rc1 主线,内核态方案可以减少上下文切换及内存拷贝开销,在性能有极致要求的情况下可以用这种模式。
由于第一种模式的环境依赖最少,比较适合演示。因此在这里我们选择 fuse 模式,将 nydusd 二进制文件中的 nydusd-fusedev 重命名为 nydusd。
cd nydus-static
mv nydusd-fusedev nydusd
- 安装可执行文件。
sudo cp nydusd nydus-image /usr/bin
sudo cp nydusify containerd-nydus-grpc /usr/bin
sudo cp ctr-remote nydus-overlayfs /usr/
cd ..
三、启动 Nydus Snapshotter
3.1 写入配置文件
Nydus 提供了一个容器化的远程快照管理器 containerd-nydus-grpc 来准备容器 rootfs 与 nydus 格式的镜像。要启动它,首先将 nydusd 配置保存到 /etc/nydusd-config.json:
sudo tee /etc/nydusd-config.json > /dev/null
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?