本发明涉及容器技术和操作系统平台,尤其涉及一种基于内存的容器操作系统的实现方法。支持容器化应用的部署,提升了整个系统的运行速度,并提升了整个系统的安全性,特别适用于边缘计算等运行资源有限,安全风险高的场景
背景技术:
1、目前容器技术已经成为一种被大家广泛认可的虚拟化及资源共享方式。容器镜像的不可变性、轻量级、高速敏捷极大的提升了软件系统的开发、部署和运维的效率。
2、容器操作系统是一种专门面向云原生领域的轻量级操作系统,它从linux底层进行了内核裁减,仅保留最基本的支持运行docker所需要的组件,体积极小、启动极快。所有其他功能组件和所有应用程序都通过容器镜像的方式由docker动态加载,在容器中运行。基于容器的基础设施的引入是一种范式转变,实现了广泛和高速的自动配置和部署,容器优化的linux是云原生基础架构的最佳基础。最小操作系统映像仅包含运行容器所需的工具。没有包管理器,没有配置漂移。在不可变的文件系统上交付操作系统消除了一整类安全漏洞。自动原子更新意味着可以获得最新的安全更新和开源技术。因为容器操作系统体积小,部署简化,运维管理方便,特别适用于云原生边缘计算领域。
3、内存文件系统,在linux中可以将一部分内存mount为分区来使用,满足高io的要求,通常称之为内存盘。内存盘有三种实现机制ramdisk,ramfs,tmpfs。ramdisk即虚拟内存盘,它是通过软件将一部分内存(ram)模拟为硬盘来使用的一种技术。相对于直接的硬盘文件访问来说,这种技术可以极大的提高在其上进行的文件访问的速度。但是ram的易失性也意味着当关闭电源后这部分数据将会丢失。
4、现在的容器技术通常是部署在物理机和操作系统之上。影响容器应用运行速度的主要因素分别为cpu,内存,硬盘,网络以及镜像操作系统,其中硬盘速度是主要瓶颈。
5、容器操作系统因其功能组件和所有应用程序都通过容器镜像的方式由docker动态加载,容器镜像的只读性和一致性很好的保障了系统的安全性,但是在容器操作系统中仍有一个精简的小内核会受到攻击,而在边缘计算环境中节点更容易受到攻击,如何进一步提升容器操作系统的安全性,也是要待解决的问题。
技术实现思路
1、为了解决以上技术问题,本发明提供了一种基于内存的容器操作系统的实现方法。将容器部署的无状态性和内存的高速特性进行结合,实现了无状态容器的内存部署。是一种简单,高效的提升容器运行效率的方法,大幅度提升了容器运行的速度。同时利用了内存的不可持久化性,实现了不可变基础设施,对系统内核的任何攻击改动都不会持久化,提高了系统的安全性。
2、本发明的技术方案是:
3、一种基于内存的容器操作系统的实现方法,采用linux系统定制技术和内存系统镜像制作技术将定制化支持容器部署的linux系统制作成镜像;通过内存镜像载入技术,实时加载内存操作系统镜像;通过内存盘加载技术,实时加载内存存储盘;通过容器存储技术持久化存储容器状态信息。实现了在内存操作系统中对无状态容器运行支持。
4、进一步的,具体步骤包括:
5、第一步:建立容器linux定制操作系统。包括编译linux内核文件;建立容器linux操作系统根文件系统;编译linux操作系统系统文件;编译linux驱动文件。
6、第二步:编译工具包软件。包括系统应用软件,驱动程序和定制化软件。
7、第三步:编译容器引擎。
8、第四步:建立linux内存操作系统镜像。包括内核初始化加载文件;内存操作系统镜像;初始化加载程序。
9、第五步:在物理机上安装操作系统。包括安装程序和安装程序执行步骤。
10、第六步:启动内存操作系统。包括初始化引导程序;加载内核模块;加载系统软件包。
11、第七步:启动服务和脚本。包括配置网络;加载存储驱动;启动容器引擎。
12、第八步:启动容器镜像提供服务。包括容器镜像配置加载,容器存储驱动加载;容器镜像运行。
13、再进一步的,
14、操作系统及基本文件存储完全在内存中。
15、支持容器引擎加载容器服务。
16、再进一步的,
17、构建内存操作系统具体步骤包括:
18、第一步:建立工作区
19、第二步:在工作区建立内存盘镜像文件
20、第三步:格式化镜像文件
21、第四步:建立根文件系统目录结构
22、第五步:编译linux内核支持内存盘
23、第六步:制作根文件系统
24、第七步:配置初始化加载
25、第八步:安装工具包软件
26、第九步:安装容器引擎
27、第十步:检查依赖关系
28、第十一步:准备启动脚本
29、第十二步:生成系统软件包
30、加载内存系统,包括:
31、第一步:当宿主机加电启动后,处理器会先在系统存储中查找bios,bios会检测系统资源然后找到第一个引导设备,这里设置为硬盘。
32、第二步:查找硬盘的主引导记录(mbr),
33、第三步:bios加载到内存中并把控制权交给mbr。
34、第四步:主引导记录会初始化引导程序,由引导程序加载内核模块。
35、第五步:在内存操作系统中引导程序将目录挂载到内存盘中,并指定物理盘上的内核模块位置。
36、第六步:内核会查找init程序并执行。
37、第七步:init读取的系统软件包并解压到内存盘中。
38、第八步:根据/etc/inittab进行初始化,
39、第九步:启动/etc/init.d里指定的默认启动级别的所有服务/脚本,包括容器引擎和网络配置。容器引擎服务在这里通过init被初始化,容器引擎服务/守护进程都在后台执行并由init来管理。
40、再进一步的,
41、容器引擎支持持久化存储驱动。通过容器持久化存储挂载技术,容器可以将状态信息持久化保存在存储设备中。
42、本发明的有益效果是
43、可获得更高的容器运行速度,内存系统在支持容器运行时读写速度是普通基于硬盘的操作系统的十倍以上,解决了在边缘节点等物理设备中cpu和磁盘性能受限影响容器应用运行速度的问题。而容器的无状态特性又和内存操作系统的数据易挥发特性吻合,容器应用特别适合在全内存环境中运行。
44、可获得更高的系统内核安全性,利用了内存的不可持久化性,实现了不可变基础设施,对系统内核的任何攻击改动都不会被持久化,提高了系统的安全性。
45、本方法不仅适用于容器操作系统加速,也适用于其他运行容器应用的操作系统版本。
1.一种基于内存的容器操作系统的实现方法,其特征在于,
2.根据权利要求1所述的方法,其特征在于,
3.根据权利要求2所述的方法,其特征在于,
4.根据权利要求2所述的方法,其特征在于,
5.根据权利要求2所述的方法,其特征在于,
6.根据权利要求2所述的方法,其特征在于,
7.根据权利要求2所述的方法,其特征在于,
8.根据权利要求7所述的方法,其特征在于,
9.根据权利要求8所述的方法,其特征在于,
10.根据权利要求8所述的方法,其特征在于,