CN109508225A - 一种windows操作系统下的应用容器系统 - Google Patents

一种windows操作系统下的应用容器系统 Download PDF

Info

Publication number
CN109508225A
CN109508225A CN201811360344.8A CN201811360344A CN109508225A CN 109508225 A CN109508225 A CN 109508225A CN 201811360344 A CN201811360344 A CN 201811360344A CN 109508225 A CN109508225 A CN 109508225A
Authority
CN
China
Prior art keywords
container
memory
file
engine
application
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
Application number
CN201811360344.8A
Other languages
English (en)
Inventor
宋磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhuhai Yizhi Safety Technology Co Ltd
Original Assignee
Zhuhai Yizhi Safety Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhuhai Yizhi Safety Technology Co Ltd filed Critical Zhuhai Yizhi Safety Technology Co Ltd
Priority to CN201811360344.8A priority Critical patent/CN109508225A/zh
Publication of CN109508225A publication Critical patent/CN109508225A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Abstract

本申请提供的一种windows操作系统下的应用容器系统,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;所述应用层兼容引擎与所述内存隔离引擎、所述文件隔离引擎、所述注册表隔离引擎和所述网络隔离引擎进行数据交互。本申请通过应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎实现了一种能兼容多个windows操作系统的应用容器,支持大部分windows操作系统下的应用程序,解决了传统的Docker容器无法兼容多版本windows操作系统、以及众多应用程序无法正常运行的技术问题。

Description

一种windows操作系统下的应用容器系统
技术领域
本申请涉及计算机容器技术领域,尤其涉及一种windows操作系统下的应用容器系统。
背景技术
容器可以作为虚拟机的一种替代品,它能够帮助开发者构建、迁移、部署和实例化应用。容器是进程的集合,这些进程共享了一个操作系统实例,但是独立于服务器系统中的其他进程。容器并不需要一个完整的操作系统,这个特性使得它们比虚拟机更加轻量。因为容器能够在数秒内启动,因此容器只用分配少量的资源,就能通过扩展来满足应用的需求。
现有的容器方案基本采用docker方案,Docker是一种虚拟化技术,是构建在轻量级的虚拟化的手段LXC(Linux Container)之上的,是一种基于进程容器(ProcessContainer)的轻量级虚拟化解决方案。Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用户构建、发布和运行分布式应用的平台。Docker相比其它虚拟化技术来说最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境、轻量级的PaaS、构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启动、停止来应对峰谷的web应用),Docker是一个跨平台、可移植并且简单易用的容器解决方案。
然而,Docker通常运行在服务器领域,对于windows操作系统的图形界面的应用程序支持不足且对windows10之前的系统不支持,许多windows操作系统下的应用程序无法正常运行。因此,亟需提出一种windows操作系统下的应用容器系统,用于支持windows操作系统下的应用程序。
发明内容
本申请提供了一种windows操作系统下的应用容器系统,用于解决传统的Docker容器无法兼容多版本windows操作系统、以及众多应用程序无法正常运行的技术问题。
本申请提供的一种windows操作系统下的应用容器系统,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;
所述应用层兼容引擎与所述内存隔离引擎、所述文件隔离引擎、所述注册表隔离引擎和所述网络隔离引擎进行数据交互,用于将数据呈现在应用程序上及将进程操作反馈;
所述内存隔离引擎用于将容器中的进程与正常windows进程进行隔离;
所述文件隔离引擎用于调度容器中进程的文件操作,读取文件时直接读取windows文件系统,写入文件时重定位到容器镜像中;
所述注册表隔离引擎用于调度容器中进程的注册表操作,读取注册表时直接读取windows注册表系统,写入注册表时重定位到容器镜像中;
所述网络隔离引擎用于调度容器中进程的网络操作,通过容器ip与windows操作系统ip的映射关系使用windows操作系统ip读取或发送网络数据。
优选地,所述内存隔离引擎包括:
页表管理模块,用于建立容器用于读写内存操作的容器页表,该容器页表包括建立的容器页表项,并将容器页表中的系统页表对应的内存操作标记为只读;
内存写入模块,用于调度容器内进程通过容器页表项进行写入内存操作;
内存读取模块,用于调度容器内进程通过容器页表读取容器内存,通过系统页表读取系统内存。
优选地,所述内存写入模块包括:
容器内存写入单元,用于调度容器内进程通过容器页表项写入容器内存;
系统内存写入单元,用于调度容器内进程写入系统内存的操作;
所述系统内存写入单元具体用于根据写入系统内存时由于只读标记自动触发的系统内存异常中断信号申请内存,并将对应的系统内存数据复制到申请到的内存中,更新页表中对应的条目,使得再次读写该系统内存时根据更新后的条目对申请到的内存进行读写。
优选地,所述文件隔离引擎包括:
文件镜像管理模块,用于建立容器对应的文件镜像,该文件镜像包括建立的目录树和磁盘占用位图;
文件写入模块,用于通过文件镜像写入文件;
文件读取模块,用于通过文件镜像或系统硬盘读取文件。
优选地,所述文件写入模块具体用于:在文件镜像中寻找需要写入文件的信息,若存在,则直接写入,若不存在,则根据需要写入文件的信息更新文件镜像并将需要写入的文件写入文件镜像。
优选地,所述注册表隔离引擎包括:
注册表镜像管理模块,用于建立容器对应的注册表镜像,该注册表镜像包括建立的键值和对应数据;
注册表写入模块,用于通过注册表镜像写入注册表数据;
注册表读取模块,用于通过注册表镜像或系统注册表读取注册表数据。
优选地,所述注册表写入模块具体用于:在注册表镜像中寻找需要写入注册表数据的信息,若存在,则直接写入,若不存在,则根据需要写入注册表数据的信息更新注册表镜像并将需要写入的注册表数据写入注册表镜像。
优选地,所述网络隔离引擎包括:
地址管理模块,用于建立容器对应的ip地址和端口,并建立容器对应的ip地址、端口与系统ip地址、端口的映射关系;
网络输出模块,用于接收容器进程的数据包并将容器对应的ip地址、端口转换为系统ip地址及端口后发送该数据包;
网络接收模块,用于通过系统ip地址、端口接收网络中的数据包并根据容器对应的ip地址、端口与系统ip地址、端口的映射关系通过容器对应的ip地址、端口发送该数据包至容器进程。
优选地,还包括硬件加速模块,
所述硬件加速模块通过CPU硬件虚拟化技术建立虚拟化层,将容器与容器之间、容器与操作系统之间的执行环境进行硬件级别隔离。
优选地,容器引擎初始化时,通过VMX指令集建立虚拟化管理环境;
容器启动时,建立一个新的虚拟化执行环境,容器中的进程执行、调度都通过系统调用VMX指令进入虚拟化执行环境后进行;
容器中的进程时间片结束后,系统通过VMX指令退出虚拟化执行环境;
容器关闭时,删除对应的虚拟化执行环境。
从以上技术方案可以看出,本申请具有以下优点:
本申请提供的一种windows操作系统下的应用容器系统,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;所述应用层兼容引擎与所述内存隔离引擎、所述文件隔离引擎、所述注册表隔离引擎和所述网络隔离引擎进行数据交互,用于将数据呈现在应用程序上及将进程操作反馈;所述内存隔离引擎用于将容器中的进程与正常windows进程进行隔离;所述文件隔离引擎用于调度容器中进程的文件操作,读取文件时直接读取windows文件系统,写入文件时重定位到容器镜像中;所述注册表隔离引擎用于调度容器中进程的注册表操作,读取注册表时直接读取windows注册表系统,写入注册表时重定位到容器镜像中;所述网络隔离引擎用于调度容器中进程的网络操作,通过容器ip与windows操作系统ip的映射关系使用windows操作系统ip读取或发送网络数据。本申请通过应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎实现了一种能兼容多个windows操作系统的应用容器,支持大部分windows操作系统下的应用程序,解决了传统的Docker容器无法兼容多版本windows操作系统、以及众多应用程序无法正常运行的技术问题。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
图1为本申请提供的一种windows操作系统下的应用容器系统的系统架构图;
图2为本申请提供的一种windows操作系统下的应用容器系统的内存隔离引擎的示意图。
具体实施方式
本申请提供了一种windows操作系统下的应用容器系统,支持windows操作系统下的应用程序,用于解决传统的Docker容器无法兼容多版本windows操作系统、以及众多应用程序无法正常运行的技术问题。
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本申请一部分实施例,而非全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
请参阅图1,本申请提供的一种windows操作系统下的应用容器系统的一个实施例,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;
应用层兼容引擎与内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎进行数据交互,用于将数据呈现在应用程序上及将进程操作反馈;
内存隔离引擎用于将容器中的进程与正常windows进程进行隔离;
文件隔离引擎用于调度容器中进程的文件操作,读取文件时直接读取windows文件系统,写入文件时重定位到容器镜像中;
注册表隔离引擎用于调度容器中进程的注册表操作,读取注册表时直接读取windows注册表系统,写入注册表时重定位到容器镜像中;
网络隔离引擎用于调度容器中进程的网络操作,通过容器ip与windows操作系统ip的映射关系使用windows操作系统ip读取或发送网络数据。
本申请通过应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎实现了windows操作系统下的应用容器,支持windows操作系统下的应用程序,解决了传统的Docker容器无法兼容多版本windows操作系统、以及众多应用程序无法正常运行的技术问题。
以上是对本申请提供的一种windows操作系统下的应用容器系统的一个实施例进行详细的描述,以下将对本申请提供的一种windows操作系统下的应用容器系统的另一个实施例进行详细的描述。
请参阅图1,本申请提供的一种windows操作系统下的应用容器系统的另一个实施例,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;
应用层兼容引擎与内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎进行数据交互,用于将数据呈现在应用程序上及将进程操作反馈;
需要说明的是,对应用不调用内核层的接口,但又有兼容性问题的部分,通过应用层兼容引擎去完成,即不涉及内存文件注册表网络的部分可以直接通过应用层兼容引擎完成。
内存隔离引擎用于将容器中的进程与正常windows进程进行隔离;
文件隔离引擎用于调度容器中进程的文件操作,读取文件时直接读取windows文件系统,写入文件时重定位到容器镜像中;
注册表隔离引擎用于调度容器中进程的注册表操作,读取注册表时直接读取windows注册表系统,写入注册表时重定位到容器镜像中;
需要说明的是,容器镜像中包括文件镜像、注册表镜像等内容。
网络隔离引擎用于调度容器中进程的网络操作,通过容器ip与windows操作系统ip的映射关系使用windows操作系统ip读取或发送网络数据。
请参阅图2,内存隔离引擎包括:
页表管理模块,用于建立容器用于读写内存操作的容器页表,该容器页表包括建立的容器页表项,并将容器页表中的系统页表对应的内存操作标记为只读;如图2所示,容器1对应的容器页表为正常系统页表和容器1页表项的结合,当容器需要对内存进行操作(读取或写入)时,先从容器页表项中寻找对应的内存,若没有找到再从系统页表中寻找对应的内存。
内存写入模块,用于调度容器内进程通过容器页表项进行写入内存操作;由于通过系统页表只能进行内存读取操作,因此需通过容器页表项进行写入内存操作,但系统页表也在内存写入模块发挥作用;
内存读取模块,用于调度容器内进程通过容器页表读取容器内存,通过系统页表读取系统内存。
内存写入模块包括:
容器内存写入单元,用于调度容器内进程通过容器页表项写入容器内存;
系统内存写入单元,用于调度容器内进程写入系统内存的操作;
系统内存写入单元具体用于根据写入系统内存时由于只读标记自动触发的系统内存异常中断信号申请内存,并将对应的系统内存数据复制到申请到的内存中,更新页表中对应的条目,使得再次读写该系统内存时根据更新后的条目对申请到的内存进行读写。
需要说明的是,页表的作用是为应用使用的内存地址和内存硬件的真实物理地址之间建立映射关系,如0x1-0x1000(应用使用的内存地址)与0x90000001-0x90001000(内存硬件的真实物理地址)两者通过页表建立映射关系。因此,当进行写入系统内存操作时,指令是修改地址0x1-0x1000的内存,就会先从容器页表项寻找对应的内存条目(0x1-0x1000),若找到则直接写入内存(写入至0x1-0x1000所映射的内存物理地址),若没有找到则从系统页表中寻找对应的内存条目,若找到则复制该内存至新申请到的内存同时将该内存对应的条目更新到容器页表项中然后系统自动再次进行写入系统内存操作,举个例子,如需写入应用使用的内存地址为0x1-0x1000的系统内存,首先在容器页表项没有找到条目,然后在系统页表中找到对应系统内存条目(例如找到了0x1-0x1000映射至0x90000001-0x90001000的条目),则需要将0x90000001-0x90001000的系统内存复制至新申请到的内存(例如内存物理地址为0x90001001-0x90002000)同时将该内存对应的条目更新到容器页表项中(在容器页表项中建立0x1-0x1000映射至0x90001001-0x90002000的条目),则再次进行写入系统内存操作(修改地址0x1-0x1000的内存)时,在容器页表项中找到该内存对应的条目(0x1-0x1000映射至0x90001001-0x90002000的条目),从而通过应用容器进行应用使用的内存地址为0x1-0x1000的内存写入操作(实际上是对内存物理地址为0x90001001-0x90002000的内存进行写入操作),并且,当进行内存地址为0x1-0x1000的内存读取时也能在容器页表项中找到该内存对应的条目从而进行读取,而对于windows操作系统本身,由于不会用到容器页表项,仅会用到正常系统页表和对应的内存,与容器使用的容器页表项和内存进行了隔离,因此实现了内存上的隔离(即系统运行访问地址0x1-0x1000的内存时,会在系统页表上找到条目从而对内存物理地址为0x90000001-0x90001000的内存进行访问,而容器访问地址0x1-0x1000的内存时,则会先在容器页表项上找到条目从而对内存物理地址为0x90001001-0x90002000的内存进行访问,实现了windows操作系统与容器的内存完全隔离)。当在容器页表项和系统页表都找不到对应的内存条目时,则无法写入内存,将触发操作系统本身的异常处理流程。
可以理解的是,内存相当于书的一页页内容,页表就是书页的目录(索引),页表中的条目是目录中标题与页数的映射关系(比如总结在第101页),有一页书需要修改,为了保证系统的不受影响,则新申请一页,把原来页的内容复制到新的页,在新页上做修改,同时新建一个书的目录(即容器页表项,比如修改成总结在第201页),这样访问总结的时候就是到201页进行访问,而系统还是原来的(因为用的系统的页表,不是新的目录,总结还是在101页)。
若容器进程需要新建内存空间,则可以直接申请内存,同时在容器页表项中建立映射关系即可。
该内存隔离引擎的实现方式为:
在容器启动时,在正常windows页表目录中,对每个容器建立独立的页表项,将其与正常的系统页表合并形成新的页表,并将系统页表标记为只读;
容器中的进程启动时,在初始化时将进程状态寄存器CR3由正常操作系统页表修改为对应的容器页表;
容器内进程执行过程中,对系统的正常访问,因为页表N中包含系统页表,可以正常进行;
容器内进程访问自身的内存,由页表提供,也可以正常进行,但是容器N外的进程(操作系统或者其他容器进程)访问,由于无法找到对应的页表项,无法进行访问。
容器内进程写如系统内存时,由于前面进行标记为只读,将自动触发系统内存异常中断流程,此时申请新的内存,将原来的系统内存数据复制到新申请内存,更新页表中对应的条目,退出异常处理流程,系统自动重新尝试写入数据,这时将写入到新申请的内存。实现了对操作系统的数据的保护和隔离。
文件隔离引擎包括:
文件镜像管理模块,用于建立容器对应的文件镜像,该文件镜像包括建立的目录树和磁盘占用位图;根据实际需要,文件镜像还可以包括其他内容,此处不再赘述;
文件写入模块,用于通过文件镜像写入文件;
文件读取模块,用于通过文件镜像或系统硬盘读取文件。
文件写入模块具体用于:在文件镜像中寻找需要写入文件的信息,若存在,则直接写入,若不存在,则根据需要写入文件的信息更新文件镜像并将需要写入的文件写入文件镜像。
例如,需要写入更新桌面的A文件,第一次在文件镜像中找不到(因为A文件是系统磁盘的文件),则将A文件复制更新到文件镜像中,同时在目录树等写入A文件的信息(使得能够在文件镜像中找到A文件),然后更新A文件镜像中,则再次访问A文件时可以实现在文件镜像中找到并顺利访问。
又例如,需要新建B文件到桌面,则直接在文件镜像中建立B文件的信息和B文件的文件数据,使得下一次能够在文件镜像中找到B文件。
注册表隔离引擎包括:
注册表镜像管理模块,用于建立容器对应的注册表镜像,该注册表镜像包括建立的键值和对应数据;
注册表写入模块,用于通过注册表镜像写入注册表数据;
注册表读取模块,用于通过注册表镜像或系统注册表读取注册表数据。
注册表写入模块具体用于:在注册表镜像中寻找需要写入注册表数据的信息,若存在,则直接写入,若不存在,则根据需要写入注册表数据的信息更新注册表镜像并将需要写入的注册表数据写入注册表镜像。
文件隔离引擎和注册表隔离引擎的实现方式为:
容器初始化时,在容器镜像中初始化文件系统结构:目录树、磁盘占用位图,注册表结构:键值及对应数据。此时内容均为空数据;
容器引擎加载时,会建立磁盘过滤驱动,将其附加到系统盘上;建立注册表访问钩子函数。需要说明的是,磁盘过滤驱动是文件隔离引擎的一种实现,进行磁盘读取或写入操作时,要通过磁盘过滤驱动进行,注册表访问钩子函数是注册表隔离引擎的一种实现;进行注册表读取或写入操作时,要通过注册表访问钩子函数。
容器中进程访问文件时,首先尝试对应镜像中文件信息,若存在,直接读取返回;
若不存在,尝试读取系统硬盘的文件数据。这样保证容器访问文件与普通windows进程没有区别。
容器中进程写入文件时,首先尝试对应镜像中文件信息,若存在,直接写入返回;若不存在,更新容器镜像中的文件磁盘信息,写入到镜像文件中。这样以后访问修改过的数据,无论是系统的还是镜像的,都能正常访问。并且对原有系统无任何印象。
容器中进程读取、修改注册表数据逻辑与文件系统类似,即将读取请求先尝试容器镜像中结构;对系统信息写入请求重定位到镜像文件中。
网络隔离引擎包括:
地址管理模块,用于建立容器对应的ip地址和端口,并建立容器对应的ip地址、端口与系统ip地址、端口的映射关系;
网络输出模块,用于接收容器进程的数据包并将容器对应的ip地址、端口转换为系统ip地址及端口后发送该数据包;
网络接收模块,用于通过系统ip地址、端口接收网络中的数据包并根据容器对应的ip地址、端口与系统ip地址、端口的映射关系通过容器对应的ip地址、端口发送该数据包至容器进程。
网络隔离引擎实现方式为:
容器引擎启动时,建立网络设备对象(TCP、UDP、RAW等)的过滤驱动和网卡过滤驱动,容器启动时,容器引擎每个容器分配单独的私有ip地址,如在172.16.0.0/16,10.0.0.0/8,192.168.0.0/16等私有IP段分配。
容器中进程访问网络时,过滤驱动进行地址转换,将容器私有ip地址、端口转换为系统ip和系统未使用的端口,建立映射关系,然后通过系统ip发送数据包。
网络中数据包到达系统时,过滤驱动进行地址转换,将系统ip、端口转换为容器ip和端口,然后通过容器ip投递数据包到对应的容器进程。
进一步地,容器可以分配系统相同网段的地址进行桥接,将容器虚拟成网络中的独立地址。
进一步地,可以通过控制容器中进程网络通信允许的IP、端口范围,实现容器内部的防火墙,控制其网络行为,实现与操作系统的隔离。
该应用容器系统还包括硬件加速模块,硬件加速模块通过CPU硬件虚拟化技术建立虚拟化层,将容器与容器之间、容器与操作系统之间的执行环境进行硬件级别隔离。
CPU硬件虚拟化技术可以是Intel VT-X、V-AMD等技术。
容器引擎初始化时,通过VMX指令集建立虚拟化管理环境;
容器启动时,建立一个新的虚拟化执行环境,容器中的进程执行、调度都通过系统调用VMX指令进入虚拟化执行环境后进行;
容器中的进程时间片结束后,系统通过VMX指令退出虚拟化执行环境;
容器关闭时,删除对应的虚拟化执行环境。
通过本申请的应用容器系统,可以在非服务器环境使用的容器化技术,支持WindowsXP及以上系统,并且可以同时运行同一个软件的不同版本,并且在运行完毕后直接从系统上抹除。本申请实现了在任意的Windows平台上跨系统版本的使用应用程序可以被封装成镜像,以容器的形式运行。
本申请实现了Windows下能够利用镜像快速部署运行服务,能够实现业务的快速交付,缩短业务的上线周期,极大地方便运维人员的上线部署工作;可以利用容器将服务移植到不同的操作系统版本环境下运行;相比传统虚拟机,容器更加轻量,资源消耗更低,镜像体积更小;较传统虚拟化有更低资源使用粒度,在一台物理机上可运行上百个容器服务,从而提高硬件资源的利用率。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种windows操作系统下的应用容器系统,其特征在于,包括:应用层兼容引擎、内存隔离引擎、文件隔离引擎、注册表隔离引擎和网络隔离引擎;
所述应用层兼容引擎与所述内存隔离引擎、所述文件隔离引擎、所述注册表隔离引擎和所述网络隔离引擎进行数据交互,用于将数据呈现在应用程序上及将进程操作反馈;
所述内存隔离引擎用于将容器中的进程与正常windows进程进行隔离;
所述文件隔离引擎用于调度容器中进程的文件操作,读取文件时直接读取windows文件系统,写入文件时重定位到容器镜像中;
所述注册表隔离引擎用于调度容器中进程的注册表操作,读取注册表时直接读取windows注册表系统,写入注册表时重定位到容器镜像中;
所述网络隔离引擎用于调度容器中进程的网络操作,通过容器ip与windows操作系统ip的映射关系使用windows操作系统ip读取或发送网络数据。
2.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,所述内存隔离引擎包括:
页表管理模块,用于建立容器用于读写内存操作的容器页表,该容器页表包括建立的容器页表项,并将容器页表中的系统页表对应的内存操作标记为只读;
内存写入模块,用于调度容器内进程通过容器页表项进行写入内存操作;
内存读取模块,用于调度容器内进程通过容器页表读取容器内存,通过系统页表读取系统内存。
3.根据权利要求2所述的一种windows操作系统下的应用容器系统,其特征在于,所述内存写入模块包括:
容器内存写入单元,用于调度容器内进程通过容器页表项写入容器内存;
系统内存写入单元,用于调度容器内进程写入系统内存的操作;
所述系统内存写入单元具体用于根据写入系统内存时由于只读标记自动触发的系统内存异常中断信号申请内存,并将对应的系统内存数据复制到申请到的内存中,更新页表中对应的条目,使得再次读写该系统内存时根据更新后的条目对申请到的内存进行读写。
4.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,所述文件隔离引擎包括:
文件镜像管理模块,用于建立容器对应的文件镜像,该文件镜像包括建立的目录树和磁盘占用位图;
文件写入模块,用于通过文件镜像写入文件;
文件读取模块,用于通过文件镜像或系统硬盘读取文件。
5.根据权利要求4所述的一种windows操作系统下的应用容器系统,其特征在于,所述文件写入模块具体用于:在文件镜像中寻找需要写入文件的信息,若存在,则直接写入,若不存在,则根据需要写入文件的信息更新文件镜像并将需要写入的文件写入文件镜像。
6.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,所述注册表隔离引擎包括:
注册表镜像管理模块,用于建立容器对应的注册表镜像,该注册表镜像包括建立的键值和对应数据;
注册表写入模块,用于通过注册表镜像写入注册表数据;
注册表读取模块,用于通过注册表镜像或系统注册表读取注册表数据。
7.根据权利要求6所述的一种windows操作系统下的应用容器系统,其特征在于,所述注册表写入模块具体用于:在注册表镜像中寻找需要写入注册表数据的信息,若存在,则直接写入,若不存在,则根据需要写入注册表数据的信息更新注册表镜像并将需要写入的注册表数据写入注册表镜像。
8.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,所述网络隔离引擎包括:
地址管理模块,用于建立容器对应的ip地址和端口,并建立容器对应的ip地址、端口与系统ip地址、端口的映射关系;
网络输出模块,用于接收容器进程的数据包并将容器对应的ip地址、端口转换为系统ip地址及端口后发送该数据包;
网络接收模块,用于通过系统ip地址、端口接收网络中的数据包并根据容器对应的ip地址、端口与系统ip地址、端口的映射关系通过容器对应的ip地址、端口发送该数据包至容器进程。
9.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,还包括硬件加速模块,
所述硬件加速模块通过CPU硬件虚拟化技术建立虚拟化层,将容器与容器之间、容器与操作系统之间的执行环境进行硬件级别隔离。
10.根据权利要求1所述的一种windows操作系统下的应用容器系统,其特征在于,容器引擎初始化时,通过VMX指令集建立虚拟化管理环境;
容器启动时,建立一个新的虚拟化执行环境,容器中的进程执行、调度都通过系统调用VMX指令进入虚拟化执行环境后进行;
容器中的进程时间片结束后,系统通过VMX指令退出虚拟化执行环境;
容器关闭时,删除对应的虚拟化执行环境。
CN201811360344.8A 2018-11-15 2018-11-15 一种windows操作系统下的应用容器系统 Pending CN109508225A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811360344.8A CN109508225A (zh) 2018-11-15 2018-11-15 一种windows操作系统下的应用容器系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811360344.8A CN109508225A (zh) 2018-11-15 2018-11-15 一种windows操作系统下的应用容器系统

Publications (1)

Publication Number Publication Date
CN109508225A true CN109508225A (zh) 2019-03-22

Family

ID=65748622

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811360344.8A Pending CN109508225A (zh) 2018-11-15 2018-11-15 一种windows操作系统下的应用容器系统

Country Status (1)

Country Link
CN (1) CN109508225A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111915961A (zh) * 2019-05-07 2020-11-10 天津科技大学 一种基于Windows平台的操作系统虚拟实验方法
CN112511611A (zh) * 2020-11-19 2021-03-16 腾讯科技(深圳)有限公司 节点集群的通信方法、装置、系统及电子设备
CN112764877A (zh) * 2021-01-06 2021-05-07 北京睿芯高通量科技有限公司 一种用于硬件加速设备与docker内进程通信的方法与系统
CN114090532A (zh) * 2021-11-10 2022-02-25 南京信易达计算技术有限公司 基于Linux操作系统跨体系构造镜像存储的方法及模块
CN114244804A (zh) * 2020-09-08 2022-03-25 成都鼎桥通信技术有限公司 基于双系统的网络器件启动方法、设备及存储介质
CN114090532B (zh) * 2021-11-10 2024-05-14 南京信易达计算技术有限公司 基于Linux操作系统跨体系构造镜像存储的方法及模块

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149688A (zh) * 2006-09-19 2008-03-26 株式会社理光 虚拟化系统、内存管理方法及控制程序
CN103699430A (zh) * 2014-01-06 2014-04-02 山东大学 基于j2ee架构的远程kvm虚拟机管理系统的工作方法
US20160274928A1 (en) * 2015-03-20 2016-09-22 International Business Machines Corporation Virtual machine migration between hypervisor virtual machines and containers
CN106294085A (zh) * 2015-05-22 2017-01-04 上海九盈信息科技有限公司 一种基于soa的服务容器维护方法及系统
CN106471791A (zh) * 2015-04-07 2017-03-01 华为技术有限公司 用于基于移动设备的集群计算架构的方法和装置
CN107566541A (zh) * 2017-08-03 2018-01-09 携程旅游信息技术(上海)有限公司 容器网络资源分配方法、系统、存储介质和电子设备
US10042661B1 (en) * 2016-03-23 2018-08-07 Virtuozzo International Gmbh Method for creation of application containers inside OS containers
CN108733455A (zh) * 2018-05-31 2018-11-02 上海交通大学 基于ARM TrustZone的容器隔离性增强系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101149688A (zh) * 2006-09-19 2008-03-26 株式会社理光 虚拟化系统、内存管理方法及控制程序
CN103699430A (zh) * 2014-01-06 2014-04-02 山东大学 基于j2ee架构的远程kvm虚拟机管理系统的工作方法
US20160274928A1 (en) * 2015-03-20 2016-09-22 International Business Machines Corporation Virtual machine migration between hypervisor virtual machines and containers
CN106471791A (zh) * 2015-04-07 2017-03-01 华为技术有限公司 用于基于移动设备的集群计算架构的方法和装置
CN106294085A (zh) * 2015-05-22 2017-01-04 上海九盈信息科技有限公司 一种基于soa的服务容器维护方法及系统
US10042661B1 (en) * 2016-03-23 2018-08-07 Virtuozzo International Gmbh Method for creation of application containers inside OS containers
CN107566541A (zh) * 2017-08-03 2018-01-09 携程旅游信息技术(上海)有限公司 容器网络资源分配方法、系统、存储介质和电子设备
CN108733455A (zh) * 2018-05-31 2018-11-02 上海交通大学 基于ARM TrustZone的容器隔离性增强系统

Non-Patent Citations (13)

* Cited by examiner, † Cited by third party
Title
ELTON STONEMAN: "Docker Volumes on Windows-Introducing the G Drive", 《HTTPS://BLOG.SIXEYED.COM/DOCKER-VOLUMES-ON-WINDOWS-THE-CASE-OF-THE-G-DRIVE/》 *
ILINUX_ONE: "docker容器网络通信原理分析", 《CSDN HTTPS://WWW.CNBLOGS.COM/ILINUXER/P/6680205.HTML》 *
JAMES TURNBULL: "《第一本Docker书》", 31 January 2015, 人民邮电出版社 *
MARKPENG: "Windows Docker第一时间揭秘", 《HTTPS://LINUX.CN/ARTICLE-5447-1.HTML》 *
MICHAEL OTEY: "Containers vs Virtual Machines", 《HTTPS://REDMONDMAG.COM/ARTICLES/2016/09/01/CONTAINERS-VS-VIRTUAL-MACHINES》 *
MICROSOFT: "Network isolation and security", 《HTTPS://DOCS.MICROSOFT.COM/EN-US/VIRTUALIZATION/WINDOWSCONTAINERS/CONTAINER-NETWORKING/NETWORK-ISOLATION-SECURITY》 *
VINCENT_江: "Docker核心技术以及实现原理", 《CSDN HTTPS://BLOG.CSDN.NET/QQ_36747237/ARTICLE/DETAILS/81872233》 *
ZTGUANG: "Docker容器和镜像存储机制-images-目录树结构", 《CSDN HTTPS://BLOG.CSDN.NET/ZTGUANG/ARTICLE/DETAILS/51016495》 *
任成鑫: "《Windows10中文版操作系统从入门到精通》", 31 January 2016, 中国青年出版社 *
崔巍: "《2013考研计算机学科专业基础综合考试大纲同步练习》", 30 June 2012, 北京航空航天大学出版社 *
李金榜,尹烨,刘天斯,陈纯: "《循序渐进学Docker》", 30 November 2016, 机械工业出版社 *
王宏: "《虚拟桌面操作系统的原理和应用》", 31 March 2018, 中国地质大学出版社 *
石磊,邹德清,金海: "《Xen虚拟化技术》", 31 May 2009, 华中科技大学出版社 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111915961A (zh) * 2019-05-07 2020-11-10 天津科技大学 一种基于Windows平台的操作系统虚拟实验方法
CN114244804A (zh) * 2020-09-08 2022-03-25 成都鼎桥通信技术有限公司 基于双系统的网络器件启动方法、设备及存储介质
CN114244804B (zh) * 2020-09-08 2023-03-21 成都鼎桥通信技术有限公司 基于双系统的网络器件启动方法、设备及存储介质
CN112511611A (zh) * 2020-11-19 2021-03-16 腾讯科技(深圳)有限公司 节点集群的通信方法、装置、系统及电子设备
CN112764877A (zh) * 2021-01-06 2021-05-07 北京睿芯高通量科技有限公司 一种用于硬件加速设备与docker内进程通信的方法与系统
CN112764877B (zh) * 2021-01-06 2024-04-26 北京中科通量科技有限公司 一种用于硬件加速设备与docker内进程通信的方法与系统
CN114090532A (zh) * 2021-11-10 2022-02-25 南京信易达计算技术有限公司 基于Linux操作系统跨体系构造镜像存储的方法及模块
CN114090532B (zh) * 2021-11-10 2024-05-14 南京信易达计算技术有限公司 基于Linux操作系统跨体系构造镜像存储的方法及模块

Similar Documents

Publication Publication Date Title
CN109508225A (zh) 一种windows操作系统下的应用容器系统
CN107515776A (zh) 业务不间断升级方法、待升级节点和可读存储介质
CN107111450B (zh) 使用分区表进行的磁盘分区拼接和重新均衡
US10042661B1 (en) Method for creation of application containers inside OS containers
CN103049334A (zh) 一种任务处理的方法和虚拟机
CN106095530A (zh) 一种多Android系统的容器自动创建及其启动方法
CN106790483A (zh) 基于容器技术的Hadoop集群系统及快速构建方法
US20130086585A1 (en) Managing the Persistent Data of a Pre-Installed Application in an Elastic Virtual Machine Instance
US9804880B2 (en) Reservation for a multi-machine application
CN106201357A (zh) 一种存储池的构建方法及系统
CN103593225A (zh) 移动虚拟化场景中多Android系统复用Binder IPC机制的方法
CN102710814A (zh) 虚拟机ip地址的控制方法及装置
CN108268299A (zh) 一种基于OpenStack云平台的Docker共享存储解决方法
CN104202332A (zh) 基于Linux内核的移动设备虚拟化系统及即时安装方法
CN106685741B (zh) 一种云主机网络接口的动态管理方法
CN106293846A (zh) 模拟处理器的升级方法及装置
CN110162396A (zh) 内存回收方法、装置、系统和存储介质
US11693742B2 (en) Backing up data for a namespace assigned to a tenant
CN109684028A (zh) 一种操作系统与用户数据分离的方法、装置及设备
CN110008004A (zh) 一种电力系统计算分析应用虚拟化方法、装置和设备
CN113296891A (zh) 基于平台的多场景知识图谱处理方法及装置
US10248449B1 (en) Application containers running inside virtual machine
CN112698930A (zh) 一种获取服务器标识的方法、装置、设备及介质
CN115618409A (zh) 数据库云服务生成方法、装置、设备及可读存储介质
CN116107691A (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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: Room 1901, No. 120, Huangpu Avenue West, Tianhe District, Guangzhou, Guangdong 510,000 (office only)

Applicant after: Guangzhou Yizhi Security Technology Co.,Ltd.

Address before: Room 105, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province 519031 (centralized office area)

Applicant before: ZHUHAI YIZHI SECURITY TECHNOLOGY Co.,Ltd.

Address after: Room 1901, No. 120, Huangpu Avenue West, Tianhe District, Guangzhou, Guangdong 510,000 (office only)

Applicant after: Guangdong Yizhi Security Technology Co.,Ltd.

Address before: Room 1901, No. 120, Huangpu Avenue West, Tianhe District, Guangzhou, Guangdong 510,000 (office only)

Applicant before: Guangzhou Yizhi Security Technology Co.,Ltd.