跳到主要内容

镜像加速

用户可通过两种方式实现镜像加速:一是使用Nydusify依赖包结合AlayaNeW自研工具进行镜像格式转换,二是通过服务器自动完成格式转换。具体操作步骤如下。

前提条件

  • 您已开通弹性容器集群,且集群可正常使用。如尚未开通,可参考开通弹性容器集群完成开通。
  • 您已经开通镜像仓库服务,且服务正常可用,如尚未开通,可参考镜像仓库开通及管理完成开通。

操作步骤

Nydusify是一个用于将Docker镜像转换为Nydus镜像格式的工具。Nydus只需要下载运行容器所需的部分文件,而不需要像传统容器镜像那样下载整个镜像。

  1. 点击安装包链接下载适用当前系统的安装包,本示例下载nydus-static-v2.3.1-linux-amd64文件,然后将文件解压到本地,例如下图所示。 image

  2. 点击下载nydusify文件,然后替换上步同名文件。

  3. 打开终端工具(如:MobaXterm),将替换文件后的文件拷贝至/usr/bin/目录下,例如下图高亮③所示。

    image

    提示

    完成拷贝操作后,您需要检查文件的权限。如果文件没有写入权限,可以运行sudo chmod +x /usr/bin/[文件名]为其添加执行权限,例如上图高亮区域②所示,确保文件具备读写和执行权限。

  4. 运行如下所示的命令,登录到私有镜像仓库,本实践以北京二区为例,例如下图高亮①所示。

    docker login registry.hd-02.alayanew.com:8443 -u [镜像仓库用户名] -p [镜像仓库密码]
  5. 运行如下所示的命令,手动执行Nydus转化命令,例如下图高亮②所示。

    image

    nydusify convert --source [srcImage] --target [srcImage]-nydus

镜像加速示例

通过镜像加速服务,可很大程度上节省镜像下载时间,以“Yaml文件方式启动镜像加速任务”测试结果为例,效率提升94%,实验结果为:

  • 使用镜像加速服务,镜像下载时间约为13s(包括等待时间),示例页面如下图所示。

    image

  • 未使用镜像加速服务,镜像下载时间约为328s(包括等待时间),示例页面如下图所示。

    image

镜像概览

  • 本次示例使用镜像为:mybigpai-public-registry.cn-beijing.cr.aliyuncs.com/easycv/torch_cuda:cogvideox_fun
  • 镜像大小:12.1G
  • 本次示例操作所选智算中心为:北京二区

操作详情

  1. 下载nydus-static-v2.3.1-linux-amd64文件,将文件解压到本地,然后下载nydusify文件,替换解压文件中的同名文件。

  2. 打开MobaXterm,将替换文件后的文件拷贝至/usr/bin/目录下,确保文件拥有读写权限,若权限不足,可参考“操作步骤”1提示部分。

  3. 登录已开通镜像加速的私有镜像仓库,如下图高亮①所示,在镜像仓库运行镜像转换命令,如下图高亮②所示。

    image

  4. 使用Yaml文件方式启动镜像下载任务、通过Aladdin创建Workshop拉取对应镜像两种方式查看转换后、前的镜像下载耗时,详情如下所示。

  1. 下载Deployment测试文件,解压该文件,复制文件至对应终端对应目录下,将弹性容器集群文件移动至对应目录下,并连接VKS(弹性容器集群),例如下图所示。

    image

  2. 运行如下所示的命令部署一个访问私有镜像仓库的应用,如上图高亮②所示,获取已启动Pod名称,运行kubectl describe pod [pod name] -n sxh查看Pod详细状态、事件日志等信息,如上图高亮④所示。查看Pod事件,本次示例拉取镜像耗时约13s,例如下图所示。

    image

     kubectl apply -f [yaml文件] -n [namespace]
    提示

    参照本示例进行操作时,如需获取密钥,可参看获取密钥章节中的说明。

  3. 移除Deployment测试文件中的Tag,如下图所示,以拉取未转换过的镜像,重新执行步骤6,然后观察Pod事件,此次拉取镜像耗时约328s,例如下图所示。

    image

结论

在同等条件下,通过上述示例可以看出,使用镜像加速能够显著提升镜像的下载和拉取效率,大幅缩短耗时。