CN114296864A - 一种iso镜像转换成容器镜像的方法及设备 - Google Patents
一种iso镜像转换成容器镜像的方法及设备 Download PDFInfo
- Publication number
- CN114296864A CN114296864A CN202111493408.3A CN202111493408A CN114296864A CN 114296864 A CN114296864 A CN 114296864A CN 202111493408 A CN202111493408 A CN 202111493408A CN 114296864 A CN114296864 A CN 114296864A
- Authority
- CN
- China
- Prior art keywords
- image
- mirror image
- virtual machine
- iso
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种iso镜像转换成容器镜像的方法,涉及云计算技术领域,解决将iso镜像转换成虚拟机容器镜像的技术问题,方法包括:创建kubevirt虚拟机规格模板;提供http文件服务器;接收用户上传的iso镜像后,并创建虚拟机;运行虚拟机生成虚拟机实例,进入安装系统步骤;用户通过vnc控制安装操作系统;安装完成后生成disk.img文件;通过qemu命令将raw格式的镜像转换成qcow2压缩镜像;qcow2镜像转换成docker镜像,生成Dockerfile文件;生成docker镜像;将docker镜像上传镜像仓。本发明还公开了一种iso镜像转换成容器镜像的设备。本发明可以将任意满足虚拟机创建的操作系统镜像转换成docker镜像,在平台内统一管理,避免两套镜像管理方式,减少维护成本。
Description
技术领域
本发明涉及云计算技术领域,更具体地说,它涉及一种iso镜像转换成容器镜像的方法及设备。
背景技术
随着云计算的技术和应用不断发展,业务的全面上云需求不断扩大,大部分web无状态业务都开始容器化,未来k8s+容器肯定是业务发布的主流选择(kubernetes,简称k8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用),业界也基本成型。虽然虚拟机的使用场景不断被压缩,但是虚拟机作为一个常用的运行时,未来也会长期存在较长时间。目前已有开源社区提供使用k8s纳管虚拟机的方法,如kubevirt等(kubevirt是Red Hat开源的以容器方式运行虚拟机的项目,是基于kubernetes运行,以CRD形式将VM管理接口接入到kubernetes,通过一个pod去使用libvirtd管理VM方式)。在容器云平台中,使用docker镜像仓管理镜像已经是比较普遍的方式,但是虚拟机所接受的文件格式只能为qcow2或者raw,而官方免费提供的虚拟机镜像太少了,而且可能有定制化的需求,而且,在云平台上管理镜像方式需要统一以便于管理,但是目前缺少一种将iso镜像转换成虚拟机容器镜像的工具,使得镜像转换非常复杂。
发明内容
本发明要解决的技术问题是针对现有技术的上述不足,本发明的目的一是提供一种iso镜像转换成容器镜像的方法,可以将iso镜像转换成docker镜像在云平台镜像仓中统一管理。
本发明的目的二是提供一种iso镜像转换成容器镜像的设备。
为了实现上述目的一,本发明提供一种iso镜像转换成容器镜像的方法,包括:
步骤1:创建kubevirt虚拟机规格模板,该模板可以修改虚拟机镜像,用于创建不同操作系统的虚拟机;
步骤2:提供http文件服务器,提供iso文件上传接口,iso镜像上传后修改镜像名为image.iso,所述http文件服务器提供文件下载接口;
步骤3:接收用户上传的iso镜像后,通过步骤1中的虚拟机规格模板创建虚拟机;
步骤4:运行步骤3创建的虚拟机,虚拟机运行后生成虚拟机实例,所述虚拟机实例从挂载的iso镜像cdrom启动,进入安装系统步骤;
步骤5:通过vnc客户端连接虚拟机,用户通过vnc控制安装操作系统,所述vnc客户端使用kuebvirt适配的novnc组件;
系统安装完成后将虚拟机关机,系统安装后系统盘挂载目录下会生成一个disk.img文件,所述disk.img文件的文件名是固定的,此文件为虚拟机镜像raw格式的镜像;
步骤6:找到系统盘挂载路径的disk.img文件,通过qemu命令将raw格式的镜像转换成qcow2压缩镜像:qemu-img convert-f raw-O qcow2 disk.img disk.qcow2;
步骤7:通过kubevirt提供的镜像转换基础镜像container-disk-v1alpha将步骤6生成的qcow2镜像转换成docker镜像,生成Dockerfile文件;
通过docker build命令生成docker镜像;
步骤8:将docker镜像上传镜像仓。
作为进一步地改进,所述虚拟机规格模板需满足最小的虚拟机系统的运行要求。
进一步地,所述运行要求包括:数据卷DataVolume是由容器化数据导入器CDI创建的。
进一步地,所述运行要求还包括:通过数据卷模板DataVolumeTemplates创建两个pvc磁盘分区,一个磁盘分区为cdrom,另一个磁盘分区为系统盘分区。
进一步地,cdrom磁盘挂载镜像文件pvc,镜像来源于http文件服务器,所述系统盘分区空挂载,干净的磁盘用于安装操作系统。
进一步地,所述虚拟机规格模板使用hostpath存储类方式,所述hostpath存储类提供动态分配存储空间的功能。
进一步地,所述运行要求还包括:系统盘大小需要满足系统运行的最小要求,内存大小需要满足系统运行的最小要求。
进一步地,系统盘为50G,内存为8G。
进一步地,还包括步骤9:删除虚拟机,保留虚拟机模板用于下次镜像转换,删除导入的本地iso镜像,并删除DV创建的的本地存储目录。
为了实现上述目的二,本发明提供一种电子设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述的iso镜像转换成容器镜像的方法。
有益效果
本发明与现有技术相比,具有的优点为:
通过本发明,用户可以将任意满足虚拟机创建的操作系统镜像转换成docker镜像,在平台内统一管理,避免两套镜像管理方式,减少维护成本,生成的镜像可以用于新的虚拟机创建。
附图说明
图1为本发明的工作流程图。
具体实施方式
下面结合附图中的具体实施例对本发明做进一步的说明。
参阅图1,一种iso镜像转换成容器镜像的方法,包括:
步骤1:创建kubevirt虚拟机规格模板,该模板可以修改虚拟机镜像,用于创建不同操作系统的虚拟机;
步骤2:提供http文件服务器,提供iso文件上传接口,iso镜像上传后修改镜像名为image.iso,http文件服务器提供文件下载接口,如:http://fileserver:8000/img.iso;
步骤3:接收用户上传的iso镜像后,通过步骤1中的虚拟机规格模板创建虚拟机;
步骤4:运行步骤3创建的虚拟机,虚拟机运行后生成虚拟机实例,虚拟机实例从挂载的iso镜像cdrom启动,进入安装系统步骤;
步骤5:通过vnc客户端连接虚拟机,用户通过vnc控制安装操作系统,vnc客户端使用kuebvirt适配的novnc组件,VNC(Virtual Network Console)是虚拟网络控制台的缩写,是一款优秀的远程控制工具软件,由著名AT&T的欧洲研究实验室开发的,VNC是在基于UNIX和Linux操作系统的免费的开源软件。novnc:noVNC是一个HTML5 VNC客户端,采用HTML5WebSockets,Canvas和JavaScript实现,noVNC被普遍用在各大云计算、虚拟机控制面板中;
系统安装完成后将虚拟机关机,系统安装后系统盘挂载目录下会生成一个disk.img文件,disk.img文件的文件名是固定的,此文件为虚拟机镜像raw格式的镜像;
步骤6:找到系统盘挂载路径的disk.img文件,通过qemu命令将raw格式的镜像转换成qcow2压缩镜像:qemu-img convert-f raw-O qcow2 disk.img disk.qcow2;
步骤7:通过kubevirt提供的镜像转换基础镜像container-disk-v1alpha将步骤6生成的qcow2镜像转换成docker镜像,生成Dockerfile文件:
[root@node1~]#cat Dockerfile
FROM kubevirt/container-disk-v1alpha:latest
ADD./disk.qcow2/disk;
通过docker build命令生成docker镜像;
docker build-t vmimage:v1;
步骤8:将docker镜像上传镜像仓;
步骤9:删除虚拟机,保留虚拟机模板用于下次镜像转换,删除导入的本地iso镜像,并删除DV创建的的本地存储目录。
虚拟机规格模板需满足最小的虚拟机系统的运行要求:
1、数据卷DataVolume是由容器化数据导入器CDI(Containerized DataImporter)创建的,CDI是一种用于将镜像导入pvc持久化数据存储的组件,而DataVolumeTemplates(数据卷模板)是kubevirt虚拟机规格内置的一种在虚拟机生命周期内管理pvc的方法,类似于k8s中的volumeClaimTemplates。
2、通过数据卷模板DataVolumeTemplates创建两个pvc磁盘分区,一个磁盘分区为cdrom,另一个磁盘分区为系统盘分区。cdrom磁盘挂载镜像文件pvc,镜像来源于http文件服务器,系统盘分区空挂载,干净的磁盘用于安装操作系统。虚拟机规格模板使用hostpath存储类方式,hostpath存储类提供动态分配存储空间的功能,如rancher/local-path。
3、系统盘大小需要满足系统运行的最小要求,内存大小需要满足系统运行的最小要求。在本实施例中,系统盘为50G,内存为8G。
步骤1中创建kubevirt虚拟机规格模板的过程如下:
一种电子设备,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行上述的iso镜像转换成容器镜像的方法。
以上仅是本发明的优选实施方式,应当指出对于本领域的技术人员来说,在不脱离本发明结构的前提下,还可以作出若干变形和改进,这些都不会影响本发明实施的效果和专利的实用性。
Claims (10)
1.一种iso镜像转换成容器镜像的方法,其特征在于,包括:
步骤1:创建kubevirt虚拟机规格模板,该模板可以修改虚拟机镜像,用于创建不同操作系统的虚拟机;
步骤2:提供http文件服务器,提供iso文件上传接口,iso镜像上传后修改镜像名为image.iso,所述http文件服务器提供文件下载接口;
步骤3:接收用户上传的iso镜像后,通过步骤1中的虚拟机规格模板创建虚拟机;
步骤4:运行步骤3创建的虚拟机,虚拟机运行后生成虚拟机实例,所述虚拟机实例从挂载的iso镜像cdrom启动,进入安装系统步骤;
步骤5:通过vnc客户端连接虚拟机,用户通过vnc控制安装操作系统,所述vnc客户端使用kuebvirt适配的novnc组件;
系统安装完成后将虚拟机关机,系统安装后系统盘挂载目录下会生成一个disk.img文件,所述disk.img文件的文件名是固定的,此文件为虚拟机镜像raw格式的镜像;
步骤6:找到系统盘挂载路径的disk.img文件,通过qemu命令将raw格式的镜像转换成qcow2压缩镜像:qemu-img convert-f raw-O qcow2 disk.img disk.qcow2;
步骤7:通过kubevirt提供的镜像转换基础镜像container-disk-v1alpha将步骤6生成的qcow2镜像转换成docker镜像,生成Dockerfile文件;
通过docker build命令生成docker镜像;
步骤8:将docker镜像上传镜像仓。
2.根据权利要求1所述的一种iso镜像转换成容器镜像的方法,其特征在于,所述虚拟机规格模板需满足最小的虚拟机系统的运行要求。
3.根据权利要求2所述的一种iso镜像转换成容器镜像的方法,其特征在于,所述运行要求包括:数据卷DataVolume是由容器化数据导入器CDI创建的。
4.根据权利要求2所述的一种iso镜像转换成容器镜像的方法,其特征在于,所述运行要求还包括:通过数据卷模板DataVolumeTemplates创建两个pvc磁盘分区,一个磁盘分区为cdrom,另一个磁盘分区为系统盘分区。
5.根据权利要求4所述的一种iso镜像转换成容器镜像的方法,其特征在于,cdrom磁盘挂载镜像文件pvc,镜像来源于http文件服务器,所述系统盘分区空挂载,干净的磁盘用于安装操作系统。
6.根据权利要求4所述的一种iso镜像转换成容器镜像的方法,其特征在于,所述虚拟机规格模板使用hostpath存储类方式,所述hostpath存储类提供动态分配存储空间的功能。
7.根据权利要求2所述的一种iso镜像转换成容器镜像的方法,其特征在于,所述运行要求还包括:系统盘大小需要满足系统运行的最小要求,内存大小需要满足系统运行的最小要求。
8.根据权利要求7所述的一种iso镜像转换成容器镜像的方法,其特征在于,系统盘为50G,内存为8G。
9.根据权利要求1所述的一种iso镜像转换成容器镜像的方法,其特征在于,还包括步骤9:删除虚拟机,保留虚拟机模板用于下次镜像转换,删除导入的本地iso镜像,并删除DV创建的的本地存储目录。
10.一种电子设备,其特征在于,所述设备包括处理器以及存储器:
所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
所述处理器用于根据所述程序代码中的指令执行权利要求1-9任一项所述的iso镜像转换成容器镜像的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493408.3A CN114296864A (zh) | 2021-12-08 | 2021-12-08 | 一种iso镜像转换成容器镜像的方法及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111493408.3A CN114296864A (zh) | 2021-12-08 | 2021-12-08 | 一种iso镜像转换成容器镜像的方法及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114296864A true CN114296864A (zh) | 2022-04-08 |
Family
ID=80965953
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111493408.3A Pending CN114296864A (zh) | 2021-12-08 | 2021-12-08 | 一种iso镜像转换成容器镜像的方法及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114296864A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968092A (zh) * | 2022-04-28 | 2022-08-30 | 江苏安超云软件有限公司 | 容器平台下基于qcow2技术的存储空间动态供应的方法及应用 |
CN117873506A (zh) * | 2024-03-12 | 2024-04-12 | 山东乾云启创信息科技股份有限公司 | 一种基于voi的镜像运行实现方法及系统 |
-
2021
- 2021-12-08 CN CN202111493408.3A patent/CN114296864A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968092A (zh) * | 2022-04-28 | 2022-08-30 | 江苏安超云软件有限公司 | 容器平台下基于qcow2技术的存储空间动态供应的方法及应用 |
CN114968092B (zh) * | 2022-04-28 | 2023-10-17 | 安超云软件有限公司 | 容器平台下基于qcow2技术的存储空间动态供应的方法及应用 |
CN117873506A (zh) * | 2024-03-12 | 2024-04-12 | 山东乾云启创信息科技股份有限公司 | 一种基于voi的镜像运行实现方法及系统 |
CN117873506B (zh) * | 2024-03-12 | 2024-06-11 | 山东乾云启创信息科技股份有限公司 | 一种基于voi的镜像运行实现方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111741134B (zh) | 一种网络靶场大规模场景中虚拟机快速构建系统与方法 | |
CN109525624B (zh) | 一种容器登录方法、装置及存储介质 | |
CN114296864A (zh) | 一种iso镜像转换成容器镜像的方法及设备 | |
US20100287280A1 (en) | System and method for cloud computing based on multiple providers | |
CN112035217A (zh) | 集群的处理方法、装置、电子设备及计算机可读存储介质 | |
CN114125028A (zh) | 微应用的运行方法、装置、设备、存储介质及程序产品 | |
CN114791856B (zh) | 基于K8s的分布式训练任务处理方法、相关设备及介质 | |
CN112398914A (zh) | 基于Kubernetes容器集群的云渲染平台 | |
CN101699403A (zh) | 一种图形化安装分布式系统的方法 | |
CN112468545A (zh) | 一种云主机创建方法、装置、系统、设备及可读存储介质 | |
CN102148839B (zh) | 一种管理ftp服务器的方法、装置及系统 | |
CN113568758A (zh) | Gpu资源池化方法、系统、设备及计算机可读存储介质 | |
CN111026406A (zh) | 应用运行方法、设备和计算机可读存储介质 | |
CN113204368A (zh) | 应用程序处理方法、服务器及存储介质 | |
CN107861761B (zh) | 一种物理主机的启动方法及系统 | |
CN114285698B (zh) | 一种嵌入式操作系统上基于K3s的DDS通信中间件的构建方法 | |
CN115016862A (zh) | 基于Kubernetes集群的软件启动方法、装置、服务器及存储介质 | |
CN112910956B (zh) | 一种资源创建方法、装置及电子设备 | |
CN114281444A (zh) | 一种实施云桌面客户端的布置方法 | |
CN113641641A (zh) | 文件存储服务的切换方法、切换系统、设备及存储介质 | |
CN114281442A (zh) | 一种云桌面客户端及其方法 | |
CN113992622A (zh) | 一种基于统一模型的多模板聚合消息通知发送系统及方法 | |
Padilla | Self-adaptation for Internet of things applications | |
CN110971665A (zh) | 一种对接多类型存储的管理方法、系统、设备及存储介质 | |
CN106919405A (zh) | 一种客户端的初始化方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |