一种Docker容器运行方法和装置的制造方法

文档序号:9750624阅读:235来源:国知局
一种Docker容器运行方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及通信领域,尤其涉及一种Docker容器运行方法和装置。
【背景技术】
[0002]集装箱(Docker)是一个开源的应用容器引擎,旨在提供一种应用的自动化部署解决方案,在Linux系统上迅速创建一个容器(container ),容器即为轻量级虚拟机,并部署和运行应用,并通过配置文件可以轻松实现应用的自动化安装、部署和升级,非常方便。Docker虚拟出多个容器,每个容器之间相互隔离没有接口,可以将彼此的生产环境和开发环境分开,互不影响。
[0003]目前云服务的基石是操作系统级别的隔离,在同一台宿主机上通过一个或多个虚拟机(Vitual Machine,简称VM)运行业务,而Docker实现了一种应用级别的隔离,它改变了基本的开发、操作单元,由直接操作VM转换为操作应用运行的“容器”。随着Docker容器技术在开发、测试、生产环境的逐步使用,如何在Dcoker上运行之前在虚拟机中构建的应用,是目前重点研究的一个课题。
[0004]现有技术的一种方案为:开发人员研究应用在虚拟机上的部署,具体包括该应用的部署架构、部署组件、安装配置方式、调测方式等信息,之后,开发人员依据Docker容器镜像要求,构建该应用对应的容器镜像,之后对构建完成的容器镜像进行部署和配置,并进行测试,测试成功之后将该应用的容器镜像存储至Docker的容器镜像仓库,需要运行该应用时,从容器镜像仓库调用该应用的容器镜像并运行。
[0005]可见,上述方法在运行以前构建在虚拟机上的应用的虚拟机镜像时,需要先将根据该应用的虚拟机镜像通过人工方式转换为容器镜像。该方法中,开发人员需要研究该应用在虚拟机上的部署,并且还需要了解Docker容器镜像要求,并构建该应用的容器镜像,该过程对开发人员要求较高,且由于应用在虚拟机上的部署时间经历较长,且较为复杂,因此需要浪费开发人员的大量精力和时间。
[0006]综上,亟需一种Docker容器运行方法和装置,用于通过简单高效的方法在Dcoker容器上运行之前在虚拟机中构建的应用。

【发明内容】

[0007]本发明实施例提供一种Docker容器运行方法和装置,用于通过简单高效的方法在Dcoker容器上运行之前在虚拟机中构建的应用。
[0008]本发明实施例提供一种集装箱Docker容器运行方法,包括:
[0009]接收用于指示运行待执行应用对应的Docker容器的执行命令;其中,执行命令中包括待执行应用的标识;
[0010]根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像;
[0011]从虚拟机镜像中的所有层数据中读出Docker容器对应的层数据和虚拟机镜像的元数据信息;其中,Docker容器对应的层数据为用于运行待执行应用对应的Docker容器所需要的层数据;
[0012]根据读出的Docker容器对应的层数据,生成Docker容器对应的快照层文件,其中,Docker容器对应的快照层文件包括Docker容器对应的层数据的快照;Docker容器对应的快照层文件为可读可写的层文件;
[0013]将Docker容器对应的快照层文件挂载至工作目录,并根据读出的虚拟机镜像的元数据信息进行环境配置;
[0014]通过运行挂载至工作目录的Docker容器对应的快照层文件,运行待执行应用对应的Docker容器。
[0015]由于本发明实施例中可以从虚拟机镜像中的所有层数据中读出Docker容器对应的层数据和虚拟机镜像的元数据信息,且Docker容器对应的层数据为用于运行待执行应用对应的Docker容器所需要的层数据,进而,可根据该读出的Docker容器对应的层数据和虚拟机镜像的元数据信息,运行待执行应用对应的Docker容器。可见,该过程简便快捷,且避免了现有技术中使用人工的方式将待执行应用的虚拟机镜像转换为容器镜像的方法,也无需开发人员既要了解待执行应用对应的虚拟机镜像的整体部署,也要了解容器镜像的构建方法,可见,本发明实施例提供的方法能够简单高效的在Dcoker容器上运行之前在虚拟机中构建的应用,且降低了对开发人员的要求。
[0016]可选地,从虚拟机镜像中的所有层数据中读出Docker容器对应的层数据和虚拟机镜像的元数据信息,具体包括:
[0017]调用虚拟机镜像驱动,并通过所调用的虚拟机镜像驱动从虚拟机镜像中的所有层数据中读出Docker容器对应的层数据和虚拟机镜像的元数据信息。
[0018]具体来说,可在虚拟机镜像驱动中配置所需读取的虚拟机镜像的格式等信息,如此,可成功通过虚拟机镜像读取虚拟机镜像,如此则实现了直接读取虚拟机镜像中的Docker容器对应的层数据和虚拟机镜像的元数据信息的目的,避免了现有技术中使用人工的方式将待执行应用的虚拟机镜像转换为容器镜像的方法,也无需开发人员既要了解待执行应用对应的虚拟机镜像的整体部署,也要了解容器镜像的构建方法,可见,本发明实施例提供的方法能够简单高效的在Dcoker容器上运行之前在虚拟机中构建的应用,且降低了对开发人员的要求。
[0019]可选地,Docker容器对应的层数据包括:
[0020]虚拟机镜像中的所有层数据中除内核文件、系统目录,以及根(boot)目录下的文件之外的层数据。
[0021]由于运行待执行应用程序的Docker容器时,可以不运行内核文件、系统目录,以及根(boot)目录下的文件等文件,因此本发明实施例中在运行待执行应用程序的Docker容器,也可不读取虚拟机镜像中的内核文件、系统目录,以及根(boot)目录下的文件等文件,如此,可减轻网络负荷,提高数据处理速度。
[0022]可选地,根据读出的虚拟机镜像的元数据信息进行环境配置,具体包括:
[0023]根据读出的待执行应用对应的虚拟机镜像的元数据信息,对系统参数进行配置,以使配置之后的系统参数与待执行应用对应的虚拟机镜像的元数据信息相匹配;
[0024]其中,系统参数为环境变量。
[0025]具体来说,在运行待执行应用之前,将系统的参数进行配置,以使配置之后的系统参数与待执行应用对应的虚拟机镜像的元数据信息相匹配,如此,可提高运行待执行应用的成功率。
[0026]可选地,根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像之前,还包括:
[0027]基于虚拟机技术,生成待执行应用对应的虚拟机镜像,并将虚拟机镜像存储于虚拟机镜像存储区域;
[0028]根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像,具体包括:
[0029]根据执行命令中包括的待执行应用的标识,从虚拟机镜像存储区域,获取待执行应用的标识对应的虚拟机镜像。
[0030]如此,可根据待执行应用的标识快速的确定出待执行应用的标识对应的虚拟机镜像,提高了数据处理速度。
[0031]本发明实施例提供一种集装箱Docker容器运行方法,包括:
[0032]接收用于指示运行待执行应用对应的Docker容器的执行命令;其中,执行命令中包括待执行应用的标识;
[0033 ]根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像;
[0034]从虚拟机镜像中读出所有层数据和虚拟机镜像的元数据信息;
[0035]根据读出的所有层数据,生成所有层数据对应的快照层文件;所有层数据对应的快照层文件为可读可写的层文件;
[0036]将所有层数据对应的快照层文件挂载至第一工作目录;
[0037]从挂载至第一工作目录的所有层数据对应的快照层文件中,删除Docker容器对应的层数据之外的层数据;其中,Docker容器对应的层数据为用于运行待执行应用对应的Docker容器所需要的层数据;
[0038]将进行删除操作之后的所有层数据对应的快照层文件中剩余的层文件,以及虚拟机镜像的元数据信息进行打包,得到预处理镜像;
[0039]根据预处理镜像,生成容器镜像的元数据信息;其中,容器镜像的元数据信息包括预处理镜像的格式信息;
[0040]将预处理镜像和容器镜像的元数据信息打包,得到待执行应用的标识对应的容器镜像;
[0041]通过运行待执行应用的标识对应的容器镜像,运行待执行应用对应的Docker容器。
[0042]由于本发明实施例中可以从虚拟机镜像中的所有层数据中读出Docker容器对应的层数据和虚拟机镜像的元数据信息,且Docker容器对应的层数据为用于运行待执行应用对应的Docker容器所需要的层数据,进而,可根据该读出的Docker容器对应的层数据和虚拟机镜像的元数据信息,运行待执行应用对应的Docker容器。可见,该过程简便快捷,且避免了现有技术中使用人工的方式将待执行应用的虚拟机镜像转换为容器镜像的方法,也无需开发人员既要了解待执行应用对应的虚拟机镜像的整体部署,也要了解容器镜像的构建方法,可见,本发明实施例提供的方法能够简单高效的在Dcoker容器上运行之前在虚拟机中构建的应用,且降低了对开发人员的要求。
[0043]可选地,从虚拟机镜像中读出所有层数据和虚拟机镜像的元数据信息,具体包括:
[0044]调用虚拟机镜像驱动,并通过所调用的虚拟机镜像驱动从虚拟机镜像中读出所有层数据和虚拟机镜像的元数据信息。
[0045]具体来说,可在虚拟机镜像驱动中配置所需读取的虚拟机镜像的格式等信息,如此,可成功通过虚拟机镜像读取虚拟机镜像。
[0046]可选地,Docker容器对应的层数据包括:
[0047]虚拟机镜像中的所有层数据中除内核文件、系统目录,以及根(boot)目录下的文件之外的层数据;
[0048]容器镜像的元数据信息包括:预处理镜像中信息的存放格式、存放位置,以及Docker容器对应的层数据中各个层数据之间的层次关系。
[0049]由于运行待执行应用程序的Docker容器时,可以不运行内核文件、系统目录,以及根(boot)目录下的文件等文件,因此本发明实施例中将内核文件、系统目录,以及根(boot)目录下的文件等文件从所有层数据对应的快照层文件中删除,如此,新生成的容器镜像中就不包括内核文件、系统目录,以及根(boot)目录下的文件等文件,运行容器镜像时,也就可以不读取内核文件、系统目录,以及根(boot)目录下的文件等文件,如此,可减轻网络负荷,提高数据处理速度。
[0050]可选地,将预处理镜像和容器镜像的元数据信息打包,得到待执行应用的标识对应的容器镜像之后,还包括:
[0051 ]将待执行应用的标识对应的容器镜像存储于容器镜像存储区域;
[0052]删除所有层数据对应的快照层文件,卸载待执行应用的标识对应的虚拟机镜像。如此,可减少资源占用,减小系统负荷。
[0053]可选地,运行待执行应用的标识对应的容器镜像,具体包括:
[0054]从容器镜像中读出Docker容器对应的层数据和容器镜像的元数据信息;其中,Docker容器对应的层数据为用于运行待执行应用对应的Docker容器所需要的层数据;
[0055]根据读出的Docker容器对应的层数据,生成Docker容器对应的快照层文件,其中,Docker容器对应的快照层文件包括Docker容器对应的层数据的快照;Docker容器对应的快照层文件为可读可写的层文件;
[0056]将Docker容器对应的快照层文件挂载至第二工作目录,并根据读出的容器镜像的元数据信息进行环境配置;
[0057]通过运行挂载至第二工作目录的快照层文件,运行待执行应用对应的Docker容器。
[0058]如此,可通过读取容器镜像,运行待执行应用对应的Docker容器。且避免了现有技术中使用人工的方式将待执行应用的虚拟机镜像转换为容器镜像的方法,也无需开发人员既要了解待执行应用对应的虚拟机镜像的整体部署,也要了解容器镜像的构建方法,可见,本发明实施例提供的方法能够简单高效的在Dcoker容器上运行之前在虚拟机中构建的应用,且降低了对开发人员的要求。
[0059]可选地,从容器镜像中读出Docker容器对应的层数据和容器镜像的元数据信息,具体包括:
[0060]调用容器镜像驱动,并通过所调用的容器镜像驱动从容器镜像中读出Docker容器对应的层数据和容器镜像的元数据信息。
[0061 ]具体来说,可在容器镜像驱动中配置所需读取的容器镜像的格式等信息,如此,可成功通过容器镜像读取容器镜像。
[0062]可选地,根据读出的容器镜像中的元数据信息进行环境配置,具体包括:
[0063]根据读出的待执行应用对应的容器镜像中的元数据信息,对系统参数进行配置,以使配置之后的系统参数与待执行应用对应的容器镜像中的元数据信息相匹配;
[0064]其中,系统参数为环境变量。
[0065]具体来说,在运行待执行应用之前,将系统的参数进行配置,以使配置之后的系统参数与待执行应用对应的虚拟机镜像的元数据信息相匹配,如此,可提高运行待执行应用的成功率。
[0066]可选地,根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像之前,还包括:
[0067]基于虚拟机技术,生成待执行应用的标识对应的虚拟机镜像,并将待执行应用的标识对应的虚拟机镜像存储于虚拟机镜像存储区域;
[0068]根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像,具体包括:
[0069]根据执行命令中包括的待执行应用的标识,从虚拟机镜像存储区域,获取待执行应用的标识对应的虚拟机镜像。
[0070]如此,可根据待执行应用的标识快速的确定出待执行应用的标识对应的虚拟机镜像,提高了数据处理速度。
[0071 ]本发明实施例提供一种集装箱Docker容器运行装置,包括:
[0072]接收单元,用于接收用于指示运行待执行应用对应的Docker容器的执行命令;其中,执行命令中包括待执行应用的标识;
[0073]获取单元,用于根据执行命令中包括的待执行应用的标识,获取待执行应用的标识对应的虚拟机镜像;
[0074]处理单元
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1