CN107797843B - 一种容器功能增强的方法和装置 - Google Patents

一种容器功能增强的方法和装置 Download PDF

Info

Publication number
CN107797843B
CN107797843B CN201610801627.6A CN201610801627A CN107797843B CN 107797843 B CN107797843 B CN 107797843B CN 201610801627 A CN201610801627 A CN 201610801627A CN 107797843 B CN107797843 B CN 107797843B
Authority
CN
China
Prior art keywords
firmware
container
plug
virtual
container engine
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.)
Active
Application number
CN201610801627.6A
Other languages
English (en)
Other versions
CN107797843A (zh
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610801627.6A priority Critical patent/CN107797843B/zh
Publication of CN107797843A publication Critical patent/CN107797843A/zh
Application granted granted Critical
Publication of CN107797843B publication Critical patent/CN107797843B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例公开了一种容器功能增强方法和装置。在一种容器功能增强的方法中,容器引擎获取第一设备的第一固件。根据第一固件,从容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件。容器引擎通过第一设备插件,向第一设备发送第一虚拟设备创建指令。容器引擎接收第一设备根据第一固件的信息发送的获取第一固件的请求。容器引擎向第一设备发送第一固件,第一设备根据所述第一固件创建所述第一设备的第一虚拟设备。本发明具体实施例提供一种容器功能增强的方法和装置。达到根据不同容器应用软件的场景来加载不同硬件的目的。解决了不能根据不同容器应用软件的场景来加载不同硬件的问题。

Description

一种容器功能增强的方法和装置
技术领域
本发明涉及计算机技术领域,尤其涉及一种容器功能增强的方法和装置。
背景技术
一种轻量级的虚拟化技术-容器(container)技术,用于生成一个独立的标准运行环境而不需要多个内核实例,例如Docker就是其中的一种容器技术。在一个容器中可以用来进程隔离,进程运行在主机操作系统上的用户空间,从而与运行在主机操作系统上的其它用户的空间相互隔离。
一个容器通常只包含软件应用与依赖库。由于所有的容器共享同一个操作系统(以及二进制文件和库)。所以,它们明显比虚拟机软件小很多,可以在一个物理主机上运行更多的容器。此外,因为容器使用主机操作系统,重启一个容器并不需要重启操作系统,因此,容器更加轻便、高效。
镜像是容器应用打包的标准格式,在部署基于容器应用时可以指定镜像,由容器应用镜像携带容器所需的执行软件和依赖库等加载到服务器运行环境中,执行相应的文件。
但是,在现有的技术中,是在服务器上提前安装好的GPU的驱动和加载的运行软件,不能根据不同容器应用软件的场景来加载不同硬件的问题。
发明内容
本发明实施例提供了一种容器功能增强的方法和装置,通过所述方法,达到能够根据不用的应用软件的场景来加载不同的硬件并创建该硬件的虚拟设备。
一方面,本发明具体实施例提供一种容器功能增强的方法。包括容器引擎获取第一设备的第一固件。根据所述第一固件,从所述容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件;所述容器引擎中包括多个设备插件,所述多个设备插件中的任意一个设备插件可与一个固定的设备连接。所述容器引擎通过所述第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备。所述容器引擎接收所述第一设备根据第一固件的信息发送的获取第一固件的请求。所述容器引擎向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备。其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。通过在容器引擎中注册多个设备插件,从而在运行容器的镜像文件时,根据镜像文件中包括的固件确定一个与该固件对应的设备相同的设备插件,通过该设备插件与相对应的设备连接时该设备创建应用于该容器的虚拟设备。达到根据不同容器应用软件的场景来加载不同硬件的目的。
在一个可能的设计中,所述容器引擎中包括设备插件控制器。所述容器引擎中包括的设备插件是注册在所述容器引擎中的设备插件。从所述容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件具体包括所述设备插件控制器从所述容器引擎中注册的多个设备插件,确定与所述第一固件的信息相匹配的第一设备插件。容器引擎中的设备插件可以通过注册的方式增加,从而根据需要能够随时增加容器引擎中包括的设备插件。
另一方面,本发明具体实施例提供一种容器服务器,包括接收单元、处理单元和发送单元。接收单元,用于接收第一设备的第一固件。处理单元,用于根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件;所述容器服务器包括多个设备插件,所述多个设备插件中的任意一个设备插件可与一个固定的设备连接。发送单元,用于根据处理单元确定的第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备。所述接收单元,还用于接收所述第一设备根据第一固件的信息发送的获取第一固件的请求。所述发送单元,还用于向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备。其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。通过在容器引擎中注册多个设备插件,从而在运行容器的镜像文件时,根据镜像文件中包括的固件确定一个与该固件对应的设备相同的设备插件,通过该设备插件与相对应的设备连接时该设备创建应用于该容器的虚拟设备。达到根据不同容器应用软件的场景来加载不同硬件的目的。
在一个可能的设计中,所述容器引擎中包括的设备插件是注册在所述容器引擎中的设备插件。所述处理单元,用于根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件具体包括所述容器引擎通过所述设备插件控制器从所述容器引擎中注册的多个设备插件中,确定与所述第一固件对应的第一设备的第一设备插件。容器引擎中的设备插件可以通过注册的方式增加,从而根据需要能够随时增加容器引擎中包括的设备插件。
再一方面,本发明具体实施例提供一种容器服务器,包括收发器和处理器。收发器,获取第一设备的第一固件。处理器,根据所述第一固件,从所述容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件;所述容器引擎中包括多个设备插件,所述多个设备插件中的任意一个设备插件可与一个固定的设备连接。所述收发器,通过所述第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备。所述收发器,接收所述第一设备根据第一固件的信息发送的获取第一固件的请求。所述收发器,向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备;其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。通过在容器引擎中注册多个设备插件,从而在运行容器的镜像文件时,根据镜像文件中包括的固件确定一个与该固件对应的设备相同的设备插件,通过该设备插件与相对应的设备连接时该设备创建应用于该容器的虚拟设备。达到根据不同容器应用软件的场景来加载不同硬件的目的。
在一个可能的设计中,所述容器引擎中包括的设备插件是注册在所述容器引擎中的设备插件。所述处理器,根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件具体包括所述容器引擎通过所述设备插件控制器从所述容器引擎中注册的多个设备插件中,确定与所述第一固件对应的第一设备的第一设备插件。容器引擎中的设备插件可以通过注册的方式增加,从而根据需要能够随时增加容器引擎中包括的设备插件。
本发明具体实施例提供一种容器功能增强的方法和装置。容器引擎中注册多个设备插件,从而在运行容器的镜像文件时,根据镜像文件中包括的固件确定一个与该固件对应的设备相同的设备插件,通过该设备插件与相对应的设备连接时该设备创建应用于该容器的虚拟设备。达到根据不同容器应用软件的场景来加载不同硬件的目的。解决了不能根据不同容器应用软件的场景来加载不同硬件的问题。
附图说明
图1为本发明具体实施例提供的一种容器服务器系统;
图2为本发明具体实施例提供的一种容器中创建虚拟设备的结构图;
图3为本发明具体实施例提供的一种容器功能增强的方法;
图4为本发明具体实施例提供的一种镜像文件;
图5为本发明具体实施例提供的一种固件与物理设备的对应关系图;
图6为本发明具体实施例提供的一种虚拟设备特征码对应关系图;
图7为本发明具体实施例提供的一种容器服务器;
图8为本发明实施例提供的一种容器服务器。
具体实施方式
下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
图1为本发明具体实施例提供的一种容器服务器系统。如图1所示,包括容器服务器和多个用户设备。所述多个用户设备向容器服务器发送在容器中进行应用运行的请求。所述容器服务器接收所述用户设备发送的请求,并根据所述请求创建包含相应应用的容器。以使所述用户设备在所述容器服务器所创建的容器中运行应用。
所述容器服务器包括中央处理器、持久化存储设备、内存和其它硬件。所述其它硬件可以包括具有多核心的物理设备,所述多核心的物理设备可以是多核心的图形处理器和/或具有多核心的数学处理器等。以使所述容器服务器在创建容器时还创建出针对所述容器的其它硬件设备的虚拟设备,并使容器在运行过程中调用创建的虚拟设备。在本发明的具体实施例中,所述其它硬件的类型不作限定,只要具有多核心并能够用于虚拟设备的创建,均为可作为本发明容器服务器中的硬件设备。
在本发明的具体实施例中,所述持久化存储硬件可以为磁盘、硬盘、固态硬盘(solid-state drive,SSD)等多种持久化存储器件中的任意一种。为了描述的方便,在本申请中仅以磁盘为例说明。
所述持久化存储设备包括用于存储容器服务的操作系统、容器镜像文件、容器引擎、所述其它硬件的设备插件、所述其它硬件的逻辑控制单元和对所述其它硬件所创建的虚拟设备。
所述中央处理器用于运行所述持久化存储设备中存储的数据,包括运行容器服务器的操作系统、在容器服务器的操作系统上运行容器镜像文件和容器引擎,并根据其他硬件的设备插件和其它硬件的逻辑控制单元创建容器和基于所述创建的容器的其它设备的虚拟设备。以及在容器创建完成后,根据所创建的容器中包括的应用进行数据处理。
所述内存用于暂时存储当前正在运行的文件。
所述其它硬件包括在容器的创建过程中创建针对所述容器的虚拟设备。当创建的所述容器中包括的应用开始运行时,所述创建了虚拟设备的其它硬件分担部分处理器中处理的数据,从而提高了容器的运行效率。
图2为本发明具体实施例提供的一种容器中创建虚拟设备的结构图。如图2所示,包括容器镜像文件。启动容器服务器操作系统时,运行于容器服务器上的容器引擎也启动。
所述容器引擎通过运行一个打包好的容器镜像文件,判断所述镜像文件中是否包括固件文件。所述固件文件包括固件和固件属性信息。所述容器引擎在确定镜像文件中包括固件文件时,获取所述固件文件中包括的固件和固件的属性信息。所述容器引擎在确定镜像文件中不包括固件时,直接创建容器以及容器应用等镜像文件中包括的其它内容。
在本发明的具体实施例中,所述固件是针对一个物理设备的固件。所述固件的属性信息是用于对不同的固件进行区分,以确定所述固件所应用的物理设备。
所述第一设备是任意一种具有多个核心的物理设备,所述物理设备中包括驱动程序。例如,所述第一设备可以是多核心的GPU,也可以是其它多核的物理设备。
在所述容器引擎运行镜像文件前,还包括对所述镜像文件进行打包。Docker是目前主流的容器技术,其使用的镜像文件打包标准是目前容器的镜像文件统一打包标准。在本发明的具体实施例中,可以采用Docker的镜像打包标准。
所述镜像文件中通常包括启动层、固件层和应用层。所述启动层用于启动所述镜像文件的运行,并根据所述启动层的目录和所述目录中包括的数据创建容器。所述多个镜像文件所创建的容器可以相同,因此,所述不同的镜像文件中可以有相同的启动层。所述固件层用于为所述创建的容器创建虚拟设备,(即为一个容器分配协处理器的部分运算能力),以使所述容器中的应用运行时可以调用协处理器处理部分数据,从而减少中央处理器的数据处理量。在本发明的具体实施例中,所述固件可以是针对不同物理设备的固件,从而根据该固件创建出对应该物理设备的虚拟设备。根据创建出的物理设备的虚拟设备达到调用该物理设备协助进行数据处理的功能。所述应用层用于创建容器中运行的应用,所述应用层中的应用可以是任意的,可以根据用户的实际需要设置。
在一个例子中,若固件为物理设备GPU的固件时,所述镜像文件运行时,创建容器、虚拟设备和应用。应用在容器中运行,容器中的应用运行时能同时通过GPU和CPU处理数据。在另一个例子中,若固件为物理设备为数学协处理器的固件时,所述镜像文件运行时,创建容器、虚拟设备和应用。应用在容器中运行,容器中的应用运行时能同时通过数学协处理器和CPU处理数据。
需要说明的是,在所述镜像文件中设置不同物理设备的固件,以使容器引擎对不同的物理设备创建虚拟硬件时,需要确定的是所述容器服务器中包括与所述固件相对应和可用的物理设备,并且所述物理设备具有多个核心支持创建虚拟设备。
所述容器引擎在运行所述启动层时,确定所述镜像文件中是否包括固件层目录及相应的固件。所述容器引擎确定所述进行文件中是否包括固件层的目录及相应的固件是在所述固件层中查找是否包括固件层的目录和相应的固件。当所述固件层中包括固件层的目录并且相应目录中包括固件时,所述容器引擎获取固件和所述固件的属性。在一个例子中,所述获取所述固件的属性是获取所述固件对应的设备名称和特征码。
所述容器引擎根据所述第一固件的属性信息,从注册的设备插件中确定出所述第一设备的第一设备插件。
根据获取的所述与所述固件对应的设备编码以及特征码进行确定。
在本发明的具体实施例中,所述容器引擎中包括一个设备插件控制器。所述设备插件控制器中注册了一个或多个设备插件,所述每个设备插件对应一个物理设备。所述设备插件可以与对应的物理设备通信并发送指令。
所述设备插件可以根据实际需要注册或删除。在一个例子中,所有的设备插件都设置在特定的目录下,所述容器引擎在启动容器时检测到该特定的目录时,确定所述目录中是否存在插件。当所述目录中存在插件时,将该目录中的所有插件注册到容器引擎中。
在本发明的具体实施例中,所述设备插件是一个物理设备的设备插件。
在一个例子中,所述容器引擎中包括固件与物理设备的对应关系,所述对应关系包括插件名称、设备名称和特征码。所述容器引擎通过获取的特征码和所述容器引擎中包括的所述固件与物理设备的对应关系确定通过哪个设备插件向该设备插件对应的物理设备发送虚拟设备创建指令。
所述容器引擎通过所述第一设备插件向所述第一设备发送第一虚拟设备创建指令,以使所述第一设备确定是否创建第一虚拟设备。
所述容器引擎在确定所述固件所对应的设备插件后,通过所述设备插件向设备插件联系的物理设备发送虚拟设备创建指令。所述设备插件在接收所述虚拟设备创建指令后,还将所述指令转化为对应物理设备的操作逻辑。所述设备插件发送的虚拟设备创建指令是转化为对应物理设备操作逻辑的指令。
所述第一设备根据所述虚拟设备创建指令确定是否对所述虚拟设备创建第一虚拟设备时,包括根据所述第一固件的属性信息进行判断。
当所述第一设备确定创建第一虚拟设备时,所述容器引擎接收所述第一设备发送的获取第一固件的请求。
在本发明的具体实施例中,所述设备插件向所述设备发送虚拟设备创建指令是通过向所述设备的驱动发送虚拟设备创建指令。所述设备的驱动中包括对所述设备调度与管理的单元,通过所述管理与调度的单元确定是否根据所述虚拟设备创建指令创建虚拟设备。
所述管理与调度的单元确定是否根据所述虚拟设备创建指令创建虚拟设备是根据所述指令中包括的信息是否满足虚拟设备创建条件和/或固件是否是该物理设备支持的固件。所述设备在根据虚拟设备创建指令确定进行虚拟设备创建指令时,还需要向设备插件发送获取固件的请求。
容器引擎向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一虚拟设备。
所述设备的调度与管理单元在确定根据所述虚拟设备创建指令创建虚拟设备后,还向所述设备插件发送指令,以获取所述固件。所述设备插件在接收所述指令后,与所述容器引擎控制器进行通信,使容器引擎控制器向容器引擎发送所请求的固件。所述容器引擎在获取所述固件后,将固件向物理设备发送。所述物理设备根据所述固件创建虚拟设备。
所述物理设备创建的新的虚拟设备需要按照统一的方式命名。例如“设备名称-特征码-编号”,其中“设备名称”是物理设备的名称,“特征码”为固件的特征码,“编号”为同一个物理设备创建的虚拟设备的顺序编号。
所述物理设备在创建虚拟设备后,还将创建虚拟设备的结果向所述设备插件发送,所述返回的结果包括创建的虚拟设备的名称。所述设备插件与设备插件控制器通信,将创建的虚拟设备的名称发送给设备插件控制器的容器引擎。所述容器引擎在获得创建的虚拟设备的名称的时,将同时创建虚拟设备特征码对应关系和将创建的虚拟设备的名称发送给容器,以使容器对所创建的虚拟设备进行应用。
图3为本发明具体实施例提供的一种容器功能增强的方法。如图3所示,通过所述方法,使所述同一容器服务器中的容器可以根据容器中运行的应用的不同,创建针对所述应用的虚拟设备,并且在容器运行时,调用所述虚拟设备。
S301、容器引擎获取第一设备的第一固件以及所述第一固件的属性信息。
所述容器引擎运行在服务器系统层面上。所述容器引擎通过运行一个打包好的容器镜像文件,判断所述镜像文件中是否报文固件。当所述镜像文件中包括固件,则也包含所述固件的属性信息。所述容器引擎在确定镜像文件中包括固件时,获取所述固件和所述固件的属性信息。所述容器在确定镜像文件中不包括固件时,直接创建容器以及容器应用等。
在本发明的具体实施例中,所述固件是包括多个属性信息的文件,与固件相对应的设备可以根据固件的属性信息确定创建设备的虚拟设备。所述固件的属性信息是用于对不同的固件进行区分,以确定所述固件所应用的物理设备。
所述第一设备是任意一种具有多个核心的物理设备,所述物理设备中包括驱动程序。例如,所述第一设备可以是多核心的GPU,也可以是其它多核的物理设备。
在所述容器引擎运行镜像文件前,还包括对所述镜像文件进行打包。Docker是目前主流的容器技术,其使用的镜像文件打包标准是目前容器的镜像文件统一打包标准。在本发明的具体实施例中,可以采用Docker的镜像打包标准。
所述镜像文件中通常包括启动层、固件层和应用层。所述启动层用于启动所述镜像文件的运行,并根据所述启动层的目录和所述目录中包括的数据创建容器。所述多个镜像文件所创建的容器可以相同,因此,所述不同的镜像文件中可以有相同的启动层。所述固件层用于为所述创建的容器创建虚拟设备,(即为一个容器分配协处理器的部分运算能力),以使所述容器中的应用运行时可以调用协处理器处理部分数据,从而减少中央处理器的数据处理量。在本发明的具体实施例中,所述固件可以是针对不同物理设备的固件,从而根据该固件创建出对应该物理设备的虚拟设备。根据创建出的物理设备的虚拟设备达到调用该物理设备协助进行数据处理的功能。所述应用层用于创建容器中运行的应用,所述应用层中的应用可以是任意的,可以根据用户的实际需要设置。
在一个例子中,若固件为物理设备GPU的固件时,所述镜像文件运行时,创建容器、虚拟设备和应用。应用在容器中运行,容器中的应用运行时能同时通过GPU和CPU处理数据。在另一个例子中,若固件为物理设备为数学协处理器的固件时,所述镜像文件运行时,创建容器、虚拟设备和应用。应用在容器中运行,容器中的应用运行时能同时通过数学协处理器和CPU处理数据。
需要说明的是,在所述镜像文件中设置不同物理设备的固件,以使容器引擎对不同的物理设备创建虚拟硬件时,需要确定的是所述容器服务器中包括与所述固件相对应和可用的物理设备,并且所述物理设备具有多个核心支持创建虚拟设备。
图4为本发明具体实施例提供的一种镜像文件。如图4所示,镜像文件中包括启动层、固件层、应用层和环境变量层。通过运行所述启动层,运行所述启动层的目录及所述目录中包括的数据创建容器。通过运行所述固件层,根据所述固件层中的固件创建虚拟设备。通过运行所述应用层,根据所述应用层中包括的数据建立容器中运行的应用。加载所述环境变量层中的环境变量,为所述应用运行时提供环境变量数据。在本发明的具体实施例中,所述镜像文件中可以包括上述内容,但又不限于上述内容。上述镜像文件中包括的部分仅为本发明的举例而不用于对本发明的限定。
所述容器引擎在运行所述启动层时,确定所述镜像文件中是否包括固件层目录及相应的固件。所述容器引擎确定所述进行文件中是否包括固件层的目录及相应的固件是在所述固件层中查找是否包括固件层的目录和相应的固件。当所述固件层中包括固件层的目录并且相应目录中包括固件时,所述容器引擎获取固件和所述固件的属性。在一个例子中,所述获取所述固件的属性是获取所述固件对应的设备名称和特征码。
S302、所述容器引擎根据所述第一固件的属性信息,从注册的设备插件中确定出所述第一设备的第一设备插件。
根据获取的所述与所述固件对应的设备编码以及特征码进行确定。
在本发明的具体实施例中,所述容器引擎中包括一个设备插件控制器。所述设备插件控制器中注册了一个或多个设备插件,所述每个设备插件对应一个物理设备。所述设备插件可以与对应的物理设备通信并发送指令。
所述设备插件可以根据实际需要注册或删除。在一个例子中,所有的设备插件都设置在特定的目录下,所述容器引擎在启动容器时检测到该特定的目录时,确定所述目录中是否存在插件。当所述目录中存在插件时,将该目录中的所有插件注册到容器引擎中。
在本发明的具体实施例中,所述设备插件可以是一种逻辑转换文件。一种设备插件对应一个固定的设备,设备插件是将各种请求信息转换为设备插件所对应的设备所能理解的逻辑。
在一个例子中,所述容器引擎中包括固件与物理设备的对应关系,所述对应关系包括插件名称、设备名称和特征码。所述容器引擎通过获取的特征码和所述容器引擎中包括的所述固件与物理设备的对应关系确定通过哪个设备插件向该设备插件对应的物理设备发送虚拟设备创建指令。
例如,图5为本发明具体实施例提供的一种固件与物理设备的对应关系图。如图5所示,包括插件名称、设备名称和特征码。若所述容器引擎从镜像文件中获取的特征码为“000001”时,所述容器引擎从图4中找到与所获取的特征码“000001”对应的物理设备“GPU”,并根据物理设备“GPU”确定所述固件需要通过插件“GPU插件”与物理设备进行通信并发送虚拟设备创建指令。在本发明的具体实施例中,所述根据图5所示的对应关系图中找到与该特征码的对应的设备插件的方法,本发明对此不作任何限定,例如通过轮询的方法确定。
S303、所述容器引擎通过所述第一设备插件向所述第一设备发送第一虚拟设备创建指令,以使所述第一设备确定是否创建第一虚拟设备。
所述容器引擎在确定所述固件所对应的设备插件后,通过所述设备插件向设备插件联系的物理设备发送虚拟设备创建指令。所述设备插件在接收所述虚拟设备创建指令后,还将所述指令转化为对应物理设备的操作逻辑。所述设备插件发送的虚拟设备创建指令是转化为对应物理设备操作逻辑的指令。
S304、当所述第一设备确定创建第一虚拟设备时,所述容器引擎接收所述第一设备发送的获取第一固件的请求。
在本发明的具体实施例中,所述设备插件向所述设备发送虚拟设备创建指令是通过向所述设备的驱动发送虚拟设备创建指令。所述设备的驱动中包括对所述设备调度与管理的单元,通过所述管理与调度的单元确定是否根据所述虚拟设备创建指令创建虚拟设备。
所述管理与调度的单元确定是否根据所述虚拟设备创建指令创建虚拟设备是根据所述指令中包括的信息是否满足虚拟设备创建条件和/或固件是否是该物理设备支持的固件。所述设备在根据虚拟设备创建指令确定进行虚拟设备创建指令时,还需要向设备插件发送获取固件的请求。
S305、所述容器引擎向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一虚拟设备。
所述设备的调度与管理单元在确定根据所述虚拟设备创建指令创建虚拟设备后,还向所述设备插件发送指令,以获取所述固件。所述设备插件在接收所述指令后,与所述容器引擎控制器进行通信,使容器引擎控制器向容器引擎发送所请求的固件。所述容器引擎在获取所述固件后,将固件向物理设备发送。所述物理设备根据所述固件创建虚拟设备。
所述物理设备创建的新的虚拟设备需要按照统一的方式命名。例如“设备名称-特征码-编号”,其中“设备名称”是物理设备的名称,“特征码”为固件的特征码,“编号”为同一个物理设备创建的虚拟设备的顺序编号。
所述物理设备在创建虚拟设备后,还将创建虚拟设备的结果向所述设备插件发送,所述返回的结果包括创建的虚拟设备的名称。所述设备插件与设备插件控制器通信,将创建的虚拟设备的名称发送给设备插件控制器的容器引擎。所述容器引擎在获得创建的虚拟设备的名称的时,将同时创建虚拟设备特征码对应关系和将创建的虚拟设备的名称发送给容器,以使容器对所创建的虚拟设备进行应用。
在一个例子中,图6为本发明具体实施例提供的一种虚拟设备特征码对应关系图。如图6所示,包括固件名称、插件名、设备名称、特征码和虚拟设备名称。其中,包括根据两个固件所创建的虚拟设备。其中,一个固件名称为“gpu-001.sock”,所对应的插件为“GPU插件”,所对应的物理设备为“GPU”,固件的特征码为“000001”,创建了一个虚拟设备名称为“GPU-000001-G0001”.另一个固件的名称为“gpu-002.sock”,所对应的插件为“GPU插件”,所对应的物理设备为“GPU”,固件的特征码为“000001”,创建了一个虚拟设备名称为“GPU-000001-G0002”。容器再运行时,容器引擎通过图6所示的内容确定容器所创建的虚拟设备,使该虚拟设备分担容器的部分数据处理工作,从而提高容器的运行效率,降低CPU的消耗。
图7为本发明具体实施例提供的一种容器服务器。如图7所示,容器服务器包括接收单元701、处理单元702和发送单元703。
接收单元701,用于接收第一设备的第一固件。
处理单元702,用于根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件。所述容器服务器包括多个设备插件,所述多个设备插件中的任意一个设备插件可与一个固定的设备连接。
发送单元703,用于根据处理单元确定的第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息。以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备。
所述接收单元701,还用于接收所述第一设备根据第一固件的信息发送的获取第一固件的请求。
所述发送单元702,还用于向所述第一设备发送所述第一固件。以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备。其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。
图8为本发明实施例提供的一种容器服务器。如图8所示,所述容器服务器包括:处理器801、存储器802、通信接口803和总线804。其中,处理器801、存储器802和通信接口803通过总线804实现彼此之间的通信连接。
处理器801可以采用通用的中央处理器(Central Processing Unit,CPU),微处理器,应用专用集成电路(Application Specific Integrated Circuit,ASIC),或者一个或多个集成电路,用于执行相关程序,以实现前述本发明方法实施例所提供的技术方案。
存储器802可以是只读存储器(Read Only Memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(Random Access Memory,RAM)。存储器802可以存储操作系统和其他应用程序。在通过软件或者固件来实现本发明实施例提供的技术方案时,用于实现本发明前述方法实施例提供的任一可选技术方案的程序代码保存在存储器802中,并由处理器801来执行。通信接口803用以与其他交换机或控制控制设备通信。
总线804可包括一通路,在设备各个部件(例如处理器801、存储器802和通信接口803)之间传送信息。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种容器功能增强的方法,其特征在于,所述方法包括:
容器引擎获取第一设备的第一固件;
根据所述第一固件,从所述容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件;所述容器引擎中包括多个设备插件,所述多个设备插件中的任意一个设备插件与一个固定的设备连接;
所述容器引擎通过所述第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备;
所述容器引擎接收所述第一设备根据第一固件的信息发送的获取第一固件的请求;
所述容器引擎向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备;其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。
2.根据权利要求1所述的方法,其特征在于,所述容器引擎中包括设备插件控制器;
所述容器引擎中包括的设备插件是注册在所述容器引擎中的设备插件;
从所述容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件具体包括:
所述设备插件控制器从所述容器引擎中注册的多个设备插件,确定与所述第一固件的信息相匹配的第一设备插件。
3.一种容器服务器,其特征在于,包括:
接收单元,用于接收第一设备的第一固件;
处理单元,用于根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件;所述容器服务器包括多个设备插件,所述多个设备插件中的任意一个设备插件与一个固定的设备连接;
发送单元,用于根据处理单元确定的第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备;
所述接收单元,还用于接收所述第一设备根据第一固件的信息发送的获取第一固件的请求;
所述发送单元,还用于向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备;其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。
4.根据权利要求3所述的服务器,其特征在于,所述容器服务器中包括的设备插件是注册在所述容器服务器中的设备插件;
所述处理单元,用于根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件具体包括:
所述容器服务器通过所述设备插件控制器从所述容器服务器中注册的多个设备插件中,确定与所述第一固件对应的第一设备的第一设备插件。
5.一种容器服务器,其特征在于,包括:
收发器,获取第一设备的第一固件;
处理器,根据所述第一固件,从容器引擎中包括的设备插件确定与第一固件的信息相匹配的第一设备插件;所述容器引擎中包括多个设备插件,所述多个设备插件中的任意一个设备插件与一个固定的设备连接;
所述收发器,通过所述第一设备插件,向所述第一设备发送第一虚拟设备创建指令,所述第一虚拟设备创建指令包括第一固件的信息,以使所述第一设备根据与第一设备相匹配的所述第一固件的信息确定创建第一虚拟设备;
所述收发器,接收所述第一设备根据第一固件的信息发送的获取第一固件的请求;
所述收发器,向所述第一设备发送所述第一固件,以使所述第一设备根据所述第一固件创建所述第一设备的第一虚拟设备;其中,所述第一固件为所述第一设备的固件,所述第一虚拟设备为所述第一设备根据所述第一固件创建的虚拟设备。
6.根据权利要求5所述的服务器,其特征在于,所述容器引擎中包括的设备插件是注册在所述容器引擎中的设备插件;
所述处理器,根据所述第一固件,确定与第一固件的信息相匹配的第一设备插件具体包括:
所述容器引擎通过所述设备插件控制器从所述容器引擎中注册的多个设备插件中,确定与所述第一固件对应的第一设备的第一设备插件。
CN201610801627.6A 2016-09-02 2016-09-02 一种容器功能增强的方法和装置 Active CN107797843B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610801627.6A CN107797843B (zh) 2016-09-02 2016-09-02 一种容器功能增强的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610801627.6A CN107797843B (zh) 2016-09-02 2016-09-02 一种容器功能增强的方法和装置

Publications (2)

Publication Number Publication Date
CN107797843A CN107797843A (zh) 2018-03-13
CN107797843B true CN107797843B (zh) 2021-04-20

Family

ID=61530634

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610801627.6A Active CN107797843B (zh) 2016-09-02 2016-09-02 一种容器功能增强的方法和装置

Country Status (1)

Country Link
CN (1) CN107797843B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110719303B (zh) * 2018-07-11 2021-03-12 大唐移动通信设备有限公司 一种容器化nrf的方法及系统
CN111078362A (zh) * 2019-12-17 2020-04-28 联想(北京)有限公司 一种基于容器平台的设备管理方法及装置
CN112416523A (zh) * 2020-11-24 2021-02-26 浪潮云信息技术股份公司 一种使用RuntimeClass实现多容器运行时的方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101124541A (zh) * 2005-02-25 2008-02-13 国际商业机器公司 修改逻辑分区数据处理系统中的虚拟适配器资源
CN103279330A (zh) * 2013-05-14 2013-09-04 江苏名通信息科技有限公司 一种基于虚拟机GPU计算下的MapReduce并行编程模型
CN103713938A (zh) * 2013-12-17 2014-04-09 江苏名通信息科技有限公司 虚拟化环境下基于OpenMP的多GPU协同计算方法
CN105138389A (zh) * 2015-07-30 2015-12-09 北京京东尚科信息技术有限公司 一种集群中虚拟设备的管理方法及系统
CN105243321A (zh) * 2015-10-27 2016-01-13 成都卫士通信息产业股份有限公司 一种基于容器虚拟化技术的密码机、实现及工作方法
CN105677479A (zh) * 2015-12-30 2016-06-15 北京奇艺世纪科技有限公司 并行运行gpu运算程序的实现方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9003411B2 (en) * 2009-05-13 2015-04-07 Verizon Patent And Licensing Inc. Automated provisioning and configuration of virtual and physical servers
US8972990B2 (en) * 2012-08-29 2015-03-03 International Business Machines Corporation Providing a seamless transition for resizing virtual machines from a development environment to a production environment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101124541A (zh) * 2005-02-25 2008-02-13 国际商业机器公司 修改逻辑分区数据处理系统中的虚拟适配器资源
CN103279330A (zh) * 2013-05-14 2013-09-04 江苏名通信息科技有限公司 一种基于虚拟机GPU计算下的MapReduce并行编程模型
CN103713938A (zh) * 2013-12-17 2014-04-09 江苏名通信息科技有限公司 虚拟化环境下基于OpenMP的多GPU协同计算方法
CN105138389A (zh) * 2015-07-30 2015-12-09 北京京东尚科信息技术有限公司 一种集群中虚拟设备的管理方法及系统
CN105243321A (zh) * 2015-10-27 2016-01-13 成都卫士通信息产业股份有限公司 一种基于容器虚拟化技术的密码机、实现及工作方法
CN105677479A (zh) * 2015-12-30 2016-06-15 北京奇艺世纪科技有限公司 并行运行gpu运算程序的实现方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
vCUDA: GPU Accelerated High Performance Computing in Virtual Machines;Lin Shi等;《2009 IEEE International Symposium on Parallel & Distributed Processing》;20090529;全文 *

Also Published As

Publication number Publication date
CN107797843A (zh) 2018-03-13

Similar Documents

Publication Publication Date Title
US9830176B2 (en) Methods, systems, and media for binary compatible graphics support in mobile operating systems
US8214849B2 (en) System for loading device-specific code and method thereof
US11221888B2 (en) Method and system for GPU virtualization based on container
EP2843552B1 (en) Method and system for executing callback functions delivered via a communication between a user-space application and the operating system kernel
CN109995814B (zh) 云主机资源的迁移方法及装置、通信设备、存储介质
US9558021B2 (en) System and method for cross-platform application execution and display
CN107797843B (zh) 一种容器功能增强的方法和装置
CN110162397B (zh) 资源分配方法、装置及系统
US11886302B1 (en) System and method for execution of applications in a container
US20120227056A1 (en) Method and system for enabling access to functionality provided by resources outside of an operating system environment
US20130204924A1 (en) Methods and apparatuses for providing application level device transparency via device devirtualization
CN108073423A (zh) 一种加速器加载方法、系统和加速器加载装置
CN112000439A (zh) 一种实现云原生应用管理虚拟机的方法
CN110659104B (zh) 一种业务监控方法及相关设备
CN116860391A (zh) Gpu算力资源调度方法、装置、设备和介质
EP3543849A1 (en) Driver management method and host machine
CN114003225A (zh) 窗口显示方法、装置、计算机设备和存储介质
CN110471744B (zh) 密码修改方法、装置、设备和计算机可读存储介质
US20150381766A1 (en) Application transfer system, application transfer method, terminal, and program
CN110245027B (zh) 一种进程间通信的方法和设备
CN117670645A (zh) 限制容器显存的方法、装置、电子设备以及存储介质
CN116821043A (zh) 物联网操作系统软硬一体化应用扩展装置及其应用
CN111475226B (zh) 电子装置、微服务调用方法和计算机可读存储介质
CN109634721B (zh) 一种虚拟机与主机的启动通信方法及相关装置
CN113760325A (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
GR01 Patent grant
GR01 Patent grant