CN114721784A - 应用运行方法、装置、电子设备及可读介质 - Google Patents
应用运行方法、装置、电子设备及可读介质 Download PDFInfo
- Publication number
- CN114721784A CN114721784A CN202210543501.9A CN202210543501A CN114721784A CN 114721784 A CN114721784 A CN 114721784A CN 202210543501 A CN202210543501 A CN 202210543501A CN 114721784 A CN114721784 A CN 114721784A
- Authority
- CN
- China
- Prior art keywords
- application
- container
- run
- command
- running
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 64
- 238000004891 communication Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 abstract description 11
- 238000012217 deletion Methods 0.000 description 12
- 230000037430 deletion Effects 0.000 description 12
- 230000008569 process Effects 0.000 description 8
- 238000012545 processing Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000010923 batch production Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, 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
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种应用运行方法、装置、电子设备及可读介质。
背景技术
随着容器化技术的不断发展,应用程序容器化的应用越来越广泛。具体进行容器化时,可以将应用程序构建到镜像中,打包为一个容器镜像,得到应用程序对应的镜像文件。
现有技术中,基于镜像文件对应用程序进行运行时,需要用户手动进行参数配置,才能以容器的方式运行应用程序。现有技术运行应用程序的方式较为复杂,操作成本较高。
发明内容
本发明实施例提供一种应用运行方法、装置、电子设备及可读介质,以解决运行应用程序的方式较为复杂,操作成本较高的问题。
第一方面,提供了一种应用运行方法,应用于宿主机,所述方法包括:
响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段;
基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称;
基于所述第二指定字段确定所述待运行应用的运行配置参数;
基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
第二方面,提供了一种应用运行装置,应用于宿主机,所述装置包括:
第一获取模块,用于响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段;
第一确定模块,用于基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称;
第二确定模块,用于基于所述第二指定字段确定所述待运行应用的运行配置参数;
第一运行模块,用于基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行所述应用运行方法。
第四方面,提供了一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行所述应用运行方法。
本发明实施例中,响应于运行命令,根据运行命令传入的待运行应用的包信息,定位与包信息对应的描述文件,并从描述文件中获取待运行应用对应的第一指定字段以及第二指定字段。基于第一指定字段确定待运行应用对应的镜像文件的镜像名称以及待运行应用对应的容器名称,基于第二指定字段确定待运行应用的运行配置参数。基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用。这样,仅需触发运行命令,即可控制宿主机以容器的方式运行待运行应用,从而一定程度上可以降低复杂程度,降低操作成本。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例提供的一种应用运行方法的步骤流程图;
图2是本发明实施例中提供的一种流程示意图;
图3是本发明实施例中提供的另一种流程示意图;
图4是本发明实施例中提供的又一种流程示意图;
图5是本发明实施例提供的一种应用运行装置的结构框图;
图6是本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1是本发明实施例提供的一种应用运行方法的步骤流程图,应用于宿主机,如图1所示,该方法可以包括:
步骤101、响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段。
本发明实施例中,宿主机可以为能够运行容器的设备,待运行应用可以为宿主机上的任一应用。包信息可以用于表征待运行应用的代码包的包名信息以及版本信息。其中,包名信息即为代码包的包名,版本信息即为代码包的版本号。其中,镜像文件可以是基于应用的代码包以及应用的描述、依赖等信息打包得到的。包信息中的包名及版本可以为镜像文件中代码包的包名及版本,包信息中的包名及版本可与待运行应用的名称以及版本相同。
描述文件可以为meta文件,描述文件可以是记录应用的镜像文件以及应用的代码包的各种信息的文件。描述文件可以是制作器在制作镜像文件时生成的。需要说明的是,镜像文件的打包格式可以根据实际需求设置,在一种应用场景中,在生成镜像文件时,可以采用Loongnix Image(lmg,Loongnix镜像)格式进行打包,相应地,镜像文件打包后可以称为lmg包。
进一步地,宿主机可以在接收到运行命令的情况下,执行上述应用运行方法。运行命令可以是针对待运行应用触发的,运行命令传入的包信息即为运行命令中携带的包信息参数。本发明实施例中,可以在预先生成的包信息和描述文件的位置信息之间的对应关系中,查找该待运行应用的包信息对应的描述文件的位置信息,以实现定位。其中,该对应关系可以是管理器安装待运行应用时生成的,对应关系可以存储至配置文件,配置文件可以为 “/var/lib/lpkg/appindex.cfg文件”。基于位置信息,从该位置信息所指示的位置中读取描述文件,从读取到的描述文件中获取待运行应用的第一指定字段以及第二指定字段。其中,第一指定字段以及第二指定字段的类型可以根据实际需求设置,例如,第一指定字段可以为应用标签字段,例如apptag字段,第二指定字段可以为权限字段,例如permission字段。
步骤102、基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称。
步骤103、基于所述第二指定字段确定所述待运行应用的运行配置参数。
示例性地,可以基于第一指定字段确定镜像名称,这样,使得使用者无需获知镜像名称即可控制宿主机在后续基于镜像文件启动待运行应用。基于第一指定字段以及运行命令传入的字段生成容器名称。具体的,运行命令传入的字段可以包括命令路径、命令所针对的应用名称以及版本。当然,还可以包括其他信息,本发明实施例对此不作限制。生成容器名称时,可以从运行命令携带的字段中获取应用名称,例如,可以去掉传入的命令路径,获取待运行应用的应用名称。以及,对第一指定字段中的字符进行处理,例如,将第一指定字段中的“:”替换为“_”。将应用名称与替换后的第一指定字段以预设标识连接,例如,预设标识可以为:“_”,进而得到容器名称。
基于第二指定字段确定待运行应用的运行配置参数时,可以从预设的对应关系中查找该第二指定字段对应的运行配置参数。其中,运行配置参数可以是在容器中运行该待运行应用所需配置的参数。不同第二指定字段对应的运行配置参数可以存在差异,不同第二指定字段对应的运行配置参数可以根据实际情况设置。
需要说明的是,在一种实现场景中,第一指定字段可以是制作lmg包时,由制作器根据传入的deb包、rpm包以及tar包中任意一种包的名称和版本生成的。其中,由于容器对名称的规范,需要对传入的版本进行转换,将如“+”转为“-”。第二指定字段可以是制作lmg包时,制作器基于开发者指定的字段写入meta文件中的。
步骤104、基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
本发明实施例中,可以基于运行配置参数进行配置,基于镜像名称确定待运行应用的镜像文件,基于镜像文件以及容器名称启动容器,从而实现以容器的方式运行待运行应用。
综上所述,本发明实施例提供的应用运行方法,响应于运行命令,根据运行命令传入的待运行应用的包信息,定位与包信息对应的描述文件,并从描述文件中获取待运行应用对应的第一指定字段以及第二指定字段。基于第一指定字段确定待运行应用对应的镜像文件的镜像名称以及待运行应用对应的容器名称,基于第二指定字段确定待运行应用的运行配置参数。基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用。这样,仅需触发运行命令,即可控制宿主机以容器的方式运行待运行应用,从而一定程度上可以降低复杂程度,降低操作成本。
可选的,应用类型可以包括桌面类应用、命令类应用以及服务类应用三种类型。其中,待运行应用可以为容器应用,即,以容器方式运行的应用。在待运行应用属于桌面类应用,即,待运行应用的类型为桌面类应用的情况下,可以称为桌面类容器应用。在待运行应用属于命令类应用,即,待运行应用的类型为命令类应用的情况下,可以称为命令类容器应用。在待运行应用属于服务类应用,即,待运行应用的类型为服务类应用的情况下,可以称为服务类容器应用。
桌面类应用可以是能够通过双击应用图标触发运行的应用,命令类应用可以是通过入口程序直接输入命令的方式即可触发运行的应用,服务类应用可以是通过系统方式触发运行的系统应用,例如,通过systemd方式触发运行。其中,“systemd”可以为服务类应用的管理程序。入口程序可以为“Terminal 终端”。实际应用场景中,操作系统分为两个部分,一部分称作内核,另一部分称为用户交互界面。Terminal入口程序用于连接内核与交互界面,它允许用户在交互界面上打开Terminal入口程序,在其中输入命令。相应地,系统会直接针对输入的命令给出反馈。
在所述待运行应用的类型为桌面类应用的情况下,本发明实施例的方法还可以包括下述步骤S21:若检测到对应用图标的触发,则基于所述应用图标对应的包信息,调用第一指定命令行中的所述运行命令,其中,所述应用图标属于所述待运行应用的镜像文件中的图片文件,所述第一指定命令行属于所述镜像文件中的桌面文件,其中,所述桌面文件以及所述图片文件预先被导出至所述宿主机。
具体的,在安装待运行应用的镜像文件时,由于待运行应用属于桌面类应用,因此,可以将待运行应用的镜像文件中的桌面文件(例如,Desktop文件)以及图片文件导出至宿主机的目录下。具体的,可以将桌面文件以及图片文件导出至桌面。由于图片文件中包括应用图标,因此,用户可以在宿主机的桌面上查看到该待运行应用的应用图标。相应地,用户可以通过双击桌面上图标进行触发,以通过桌面图标运行桌面类应用。其中,镜像文件可以由管理器在安装应用时,使用应用镜像包中的image文件和基础镜像包中的image文件组装而成。其中,基础镜像包可以为“lmg base包”。镜像文件可以一部分加载到内存中,一部分加载到容器所属的目录中。
桌面上不同应用图标可以表征不同应用,对应不同的包信息。应用图标对应的包信息即为该应用图标表征的应用的包信息。各应用图标与包信息的对应关系可以预先设定。在检测到对待运行应用的应用图标的触发操作的情况下,可以获取该应用图标对应的包信息,并基于该包信息调用第一指定命令行中的运行命令。其中,第一指定命令行可以为Exec命令行,第一指定命令行可以是在导出桌面文件之前,在桌面文件中定义的。运行命令可以为lmgrun命令。基于该包信息调用第一指定命令行中的运行命令时,可以通过管理器打开desktop文件,基于Exec字符从中搜索匹配,以查找第一指定命令行。之后,可以将包信息设置为第一指定命令行中运行命令的参数,以调用该运行命令。通过调用第一指定命令行中的运行命令,使得宿主机可以响应于被调用的运行命令,执行后续操作。
本实现方式中,通过预先导出桌面文件以及图片文件,使得用户仅需触发桌面上的应用图标,即可控制宿主机以容器方式运行待运行应用,从而可以进一步简化操作。
或者,在所述待运行应用的类型为命令类应用的情况下,本发明实施例的方法还可以包括下述步骤S22:接收用户输入的所述运行命令。
或者,在所述待运行应用的类型为服务类应用的情况下,本发明实施例的方法还可以包括下述步骤S23:接收用户输入的操作命令,并基于所述操作命令指示的服务文件中的第二指定命令行,生成所述运行命令,其中,所述服务文件预先被导出至所述宿主机。
如果待运行应用的类型为命令类应用,则预先可以不额外导出文件。用户可以打开terminal入口程序,手动输入运行命令。其中,输入的运行命令中包括待运行应用的包信息,以通过传入的包信息运行命令类应用。在制作待运行应用的镜像文件时,如果待运行应用的类型为服务类应用,则可以预先导出服务文件,例如services文件,以通过services文件运行服务类应用。示例性地,用户可以打开terminal入口程序,输入操作命令。其中,操作命令可以为如下格式:systemctl <actions> <lmgservices>,操作命令中的参数:<lmgservices>可以用于指示预先导出的服务文件,操作命令中的参数:<actions>可以同于表征操作类型。相应地,终端可以在操作命令指示的服务文件中寻找对应的第二指定命令行,调用第二指定命令行,在该第二指定命令行的命令中设置包信息,以生成运行命令,从而使得宿主机可以响应于该运行命令,执行后续操作。本发明实施例中,用户仅需手动输入命令,即可使宿主机获得运行命令,进而控制宿主机以容器方式运行待运行应用。这样,一定程度上可以简化用户操作。
需要说明的是,本发明实施例中,宿主机可以响应于运行命令,调用预设的运行器,将运行命令以及包信息传入运行器。由运行器根据运行命令传入的待运行应用的包信息,定位与包信息对应的描述文件,并从描述文件中获取待运行应用对应的第一指定字段以及第二指定字段。其中,运行器可以是预设的脚本文件。
可选的,本发明实施例中,运行配置参数可以包括待加载环境变量、待挂载目录以及待挂载设备。相应地,上述步骤104基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用的步骤,具体可以包括:
步骤1041、基于所述镜像名称、所述容器名称以及所述运行配置参数,生成启动命令。
步骤1042、执行所述启动命令,以加载所述待加载环境变量,挂载所述待挂载目录以及所述待挂载设备,并基于所述镜像名称对应的镜像文件启动容器,在所启动的容器中运行所述待运行应用,其中,所述所启动的容器的名称被设置为所述容器名称。
本发明实施例中,待加载环境变量可以是运行该待运行应用时需要使用到的宿主机的环境(environment)变量信息,例如,DISPLAY环境变量和/或输入法环境变量等等。待挂载目录可以是宿主机中的存储目录,通过挂载存储目录,可以实现容器内外的数据共享,使得容器可以访问到宿主机中的存储目录。示例性地,待挂载目录可以为家目录、根目录等等。待挂载设备可以为宿主机的外接设备,通过挂载外接设备,使得容器可以访问并控制外接设备。示例性地,外接设备可以为声卡和/或显卡等等。需要说明的是,本发明实施例中还可以定义所需挂载的文件、用户标识信息等等,使得启动时,可以对应挂载所需挂载的文件、用户标识信息等等。
可以将镜像名称、容器名称以及运行配置参数,按照启动命令的格式组装成启动命令。其中,启动命令可以是前缀为docker run、docker exec或者docker start的命令。该启动命令中可以定义有镜像名称、容器名称以及运行配置参数。这样,在执行该启动命令时,可以控制宿主机加载待加载环境变量、挂载待挂载目录以及待挂载设备,基于镜像名称对应的镜像文件启动容器,在所启动的容器中启动待运行应用,从而在该容器中运行待运行应用,并设置所启动的容器的名称为该容器名称。其中,镜像名称对应的镜像文件可以是运行器通过镜像名称获取到的。基于镜像名称对应的镜像文件所启动的容器可以提供待运行应用的描述、依赖等信息,容器可以理解为镜像的一个运行实例,通过镜像文件可以创建一个容器。进一步地,镜像文件可以是预先在宿主机本地制作的,也可以是从预设的镜像仓库中获取的,本发明实施例对此不作限制。
本发明实施例中,宿主机可以基于镜像名称、容器名称以及运行配置参数自动生成启动命令,并通过执行启动命令,完成运行配置,在容器中启动待运行应用,从而运行待运行应用。这样,可以避免用户手动控制加载待加载环境变量、挂载目录以及设备,节省用户的控制成本。
可选的,在步骤102基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称之后,本发明实施例的方法还可以包括下述步骤:
步骤S31、在所述宿主机中查找是否存在与所述容器名称对应的容器。
实际应用场景中,可能之前已经基于待运行应用的镜像文件启动过容器来运行待运行应用,即,可能存在名称为该容器名称的容器。具体的,将该容器名称与宿主机中各已存在容器的名称进行比对,如果两者一致,则说明目前存在用于运行该待运行应用的容器,存在与该容器名称对应的容器。
上述步骤103可以具体包括:
步骤1031、在不存在目标容器的情况下,基于所述第二指定字段确定所述待运行应用的运行配置参数,其中,所述目标容器是与所述容器名称对应的容器。
具体的,在不存在目标容器的情况下,即,不存在可以复用的容器的情况下,执行基于所述第二指定字段确定所述待运行应用的运行配置参数的操作,以在后续过程中创建新的容器运行待运行应用。
需要说明的是,本发明实施例还可以在存在目标容器的情况下,进一步判断目标容器的容器状态,基于当前的容器状态决定处理方式。
可选的,在步骤S31在所述宿主机中查找是否存在与所述容器名称对应的容器之后,上述步骤103也可以具体包括下述步骤:
步骤S41、在存在所述目标容器的情况下,获取所述目标容器的当前状态。
其中,目标容器可以具体是之前启动的用于运行待运行应用的容器。相应地,可以获取名称与该容器名称一致的目标容器的当前状态。示例性地,可以从预先记录的目标容器的状态信息文件中,读取名称与该容器名称一致的目标容器的状态信息,将该状态信息表征的状态确定为当前状态。其中,状态信息文件用于记录目标容器的最新状态。当前状态可以为运行中(running)或者已退出(exited)。
步骤S42、在所述当前状态为已退出的情况下,根据所述待运行应用的类型删除所述目标容器。
步骤S43、在成功删除所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数。
本步骤中可以在执行删除操作之后,再次检测目标容器是否还存在,如果不存在,则可以确定成功删除目标容器。在成功删除目标容器后基于第二指定字段确定待运行应用的运行配置参数,基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用的操作可以参照前述相关步骤,此处不做赘述。
本公开实施例中,在存在目标容器的情况下,进一步获取目标容器的当前状态,在存在目标容器且当前状态为已退出的分支情况下,根据待运行应用的类型删除目标容器,在成功删除后基于第二指定字段确定待运行应用的运行配置参数,并基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用。这样,可以在实现应用运行的同时,减少历史容器对空间资源的占用。
上述步骤S42在所述当前状态为已退出的情况下,根据所述待运行应用的类型删除所述目标容器的步骤,具体可以包括:
步骤S421、在所述当前状态为已退出且所述待运行应用的类型为命令类应用或服务类应用的情况下,删除所述目标容器。
本发明实施例中,若待运行应用的类型为命令类应用或服务类应用,在当前状态为已退出的情况下,直接删除目标容器,以便于在成功删除之后再基于第二指定字段确定待运行应用的运行配置参数,并基于镜像名称、容器名称以及运行配置参数,以容器方式运行待运行应用的方式,一定程度上可以简化实现逻辑。
或者,步骤S422、在所述当前状态为已退出且所述待运行应用的类型为桌面类应用的情况下,获取所述目标容器的退出码;在所述退出码符合预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息不一致的情况下,删除所述目标容器。
其中,退出码可以用于表征目标容器的退出原因。退出码符合预设条件可以指的是退出码为特定数码。特定数码可以是运行出错导致的退出码。示例性地,特定数码可以包括0、1、137、139、和/或255等。如果退出码为特定数码则一定程度上可以确定该已退出的目标容器可以正常运行应用,目标容器是响应于历史运行命令正常退出的。进一步地,可以检测历史运行命令指示的应用信息与运行命令指示的应用信息是否一致。其中,历史运行命令可以是之前发送的用于启动该被退出的目标容器的命令。
如果两者一致,则可以确定目标容器启动后所显示的内容与本次启动需要显示的内容一致,反之,则说明不一致。示例性地,以应用为浏览器为例,上一次启动时传入的命令中携带的启动信息为:启动浏览器并打开网页1,即,历史运行命令指示的应用信息可以指示网页1;本次运行命令中携带的启动信息为:启动浏览器并打开网页2,即,本次运行命令中的应用信息可以指示网页2。由于两者所需打开的网页不同,例如,网页1可能是个错误页面,网页2才是用户实际想要查看的网页。因此,如果两者不一致,则可以删除目标容器,不复用该目标容器,在成功删除之后参照步骤103至步骤104重新创建容器运行待运行应用,从而使得重新创建容器之后能显示用户本次实际想要查看的网页,确保待运行应用能够正常在容器中运行并显示用户实际需求的页面。其中,应用信息可以指示应用所显示的页面。进一步地,通过删除目标容器,可以避免对宿主机的资源占用。
可选的,在所述步骤S422中获取所述目标容器的退出码的步骤之后,本发明实施例的方法还可以包括下述步骤:
步骤S81、在所述退出码符合所述预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息一致的情况下,重新启动所述目标容器,并基于所述目标容器运行所述待运行应用。
由于复用目标容器运行待运行应用的效率较高,本发明实施例中,进一步获取目标容器的退出码。在所述退出码符合预设条件且目标容器对应的历史运行命令指示的应用信息与运行命令指示的应用信息一致的情况下,重新启动目标容器,并基于目标容器启动待运行应用,从而运行待运行应用。这样,一定程度上可以提高复用的概率,从而提高运行效率。且一定程度上可以避免由于使用无法正常运行的目标容器运行待运行应用,导致运行失败的问题。
具体的,在目标容器对应的历史运行命令指示的应用信息与运行命令指示的应用信息一致的情况下,才重新启动该目标容器,并基于该目标容器运行待运行应用。可以在复用目标容器的同时,确保显示用户本次实际想要查看的网页,较大程度避免重启复用的容器无法正常运行待运行应用并正常显示所需页面的问题。其中,应用信息可以指示应用所显示的页面。
可选的,本发明实施例中还可以在所述退出码不符合所述预设条件的情况下,输出报错信息。
如果退出码不符合预设条件,即,退出码不为特定数码则可以确定该已退出的目标容器无法正常运行应用。相应地,可以输出报错信息,以方便进行修复。具体的,可以将报错信息发送给待运行应用的后台服务器,其中报错信息可以包括待运行应用的版本、和/或出错时间等等。需要说明的是,在输出报错信息的同时,还可以删除目标容器,以结束对资源的占用。进一步地,还可以基于第二指定字段确定待运行应用的运行配置参数,基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用,从而实现应用运行。当然,也可以不确定运行配置参数,不创建容器来运行待运行应用,从而一定程度上避免出现容器无法正常运行应用的问题。具体的,可以在接收到针对报错信息提交的已修复信息的情况下,再基于第二指定字段确定待运行应用的运行配置参数,基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用。
可选的,在获取所述目标容器的当前状态的步骤之后,本发明实施例的方法还可以包括下述步骤:
步骤S61、在所述当前状态为运行中且所述待运行应用的类型为桌面类应用或命令类应用的情况下,从所述描述文件中获取所述待运行应用对应的第三指定字段,所述第三指定字段用于表征所述待运行应用是否支持应用多开。
其中,第三指定字段可以为“parallel”字段,应用多开可以指宿主机中对待运行应用进行分身,同时打开多个待运行应用,运行待运行应用的多个实例。获取第三指定字段的操作可以由运行器执行。获取第三指定字段的操作可以与获取第一指定字段以及第二指定字段的操作同时进行。获取第一、第二、以及第三指定字段中任意一个字段的操作可以具体是获取对应指定字段的值。需要说明的是,也可以在获取目标容器的当前状态之前就获取第三指定字段,例如,在获取第一指定字段以及第二指定字段时,同时获取第三指定字段,本发明实施例对此不做限制。
步骤S62、若所述第三指定字段为特定值,则基于所述目标容器运行所述待运行应用。
示例性地,特定值可以为1。若第三指定字段为特定值,则可以确定待运行应用支持应用多开。相应地,可以基于目标容器再次启动待运行应用,以基于目标容器运行待运行应用。例如,通过该目标容器,调用热启动方式启动待运行应用,从而运行该待运行应用。由于目标容器的当前状态为运行中,也就是说,当前已经存在一个运行中的待运行应用,基于目标容器再次启动待运行应用之后,可以得到另一个运行中的待运行应用,同时运行多个待运行应用的实例。示例性地,以浏览器为例,当双击桌面浏览器图标打开一个应用时,再次双击桌面浏览器图标时,可以触发判断多开字段,以确定是否允许再打开一个浏览器页面。
步骤S63、若所述第三指定字段不为所述特定值,则输出提示信息,所述提示信息用于表征所述待运行应用已被运行。
如果第三指定字段不为特定值,则可以确定待运行应用不支持应用多开,此时,如果基于目标容器再次启动待运行应用,会导致报错。因此,本步骤中,可以输出提示信息,向用户表征待运行应用已被运行。示例性地,可以基于窗口/命令行提示用户,待运行应用已被运行。
本发明实施例中,基于第三指定字段确定待运行应用是否支持多开,在支持的情况下,才基于运行中的目标容器直接启动所述待运行应用。这样,一定程度上可以在实现应用运行的同时,避免运行多个待运行应用导致报错的问题。
可选的,在获取所述目标容器的当前状态的步骤之后,本发明实施例的方法还可以包括下述步骤:
步骤S71、在所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出提示信息,所述提示信息用于表征所述待运行应用已被运行。即,在当前状态为运行中且待运行应用的类型为服务类应用的情况下,不获取第三指定字段,而是直接输出提示信息。
实际应用场景中,服务类应用作为系统级应用,如果多开可能会对宿主机带来较大影响,因此,针对待运行应用的类型为服务类应用的情况,可以在当前状态为运行中的情况下,直接输出提示信息,以最大程度避免应用多开带来的问题。相应地,针对待运行应用的类型为桌面类应用或命令类应用的情况,可以基于第三指定字段是否为特定值,来决定是否进行应用多开。这样,可以在支持的情况下进行应用多开,从而方便用户使用,提高使用便捷度。或者,也可以仅在待运行应用的类型为桌面类应用的情况下,获取第三指定字段,并基于第三指定字段是否为特定值,来决定是否进行应用多开。
可选的,本发明实施例的方法还可以包括下述步骤:
步骤S91、获取操作命令指示的操作类型,其中,所述运行命令基于所述操作命令生成。
其中,该操作命令可以为上述步骤S23中的操作命令,操作类型可以是基于操作命令中的action参数指定的,操作类型可以包括直接启动(start)、重启(restart)、停止(stop)以及使能(enable)。需要说明的是,可以仅在操作类型为start或restart的情况下,生成运行命令。并在后续操作中获取目标容器的当前状态,以避免执行不必要的操作。
上述步骤S71在所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出提示信息的步骤,具体可以包括:步骤S711、在所述操作类型为直接启动、所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出所述提示信息。
如果操作类型为直接启动,则可以在当前状态为运行中的情况下,直接输出提示信息。当然,本发明实施例中还可以在输出提示信息之后,进一步删除该目标容器,以节省宿主机的资源。
可选的,在上述步骤S91获取操作命令指示的操作类型之后,本发明实施例的方法还可以包括下述步骤:
步骤S92、在所述操作类型为重启且所述当前状态为运行中的情况下,删除或退出所述目标容器。
步骤S93、在成功删除或退出所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数,并基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
如果操作类型为重启,则说明需要将目标容器退出运行,并重新创建新的容器运行待运行应用。相应地,如果当前状态为运行中,则可以先删除目标容器。当然,也可以是仅退出目标容器,并不删除该目标容器。然后在成功删除或退出之后基于第二指定字段确定待运行应用的运行配置参数,并创建新的容器运行待运行应用。具体的,可以在执行删除或退出操作之后,检测目标容器是否还存在或检测目标容器的状态是否为已退出,从而确定是否成功删除或退出目标容器。
需要说明的是,在待运行应用的类型为服务类应用的情况下,也可以在当前状态为已退出的情况下,判断操作命令的操作类型,当操作命令的操作类型为重启时,可以不执行删除目标容器的操作,而是直接基于第二指定字段确定待运行应用的运行配置参数,并基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用,本发明实施例对此不做限制。
不存在与容器名称对应的容器且操作类型为直接启动或者重启的情况下,基于第二指定字段确定待运行应用的运行配置参数,并基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用,以创建新的容器运行待运行应用,从而提高命令响应效率。
本发明实施例中,针对服务类应用,通过获取操作命令指示的操作类型,针对操作类型适应性执行后续操作,从而一定程度上可以确保执行的操作适配不同的操作类型。
可选的,本发明实施例中还可以执行:在所述操作类型为使能操作的情况下,将所述待运行应用加入所述宿主机的开机自启动项目中。
示例性地,可以使用使能(enable)命令,将待运行应用的标识添加至宿主机的开机自启动名单中,以使得宿主机在开机时,可以自动触发启动待运行应用,从而提高启动效率。且用户通过发送操作类型为使能操作的操作命令,即可控制宿主机将待运行应用加入宿主机的开机自启动项目中,从而可以简化用户的设置操作。
需要说明的是,本发明实施例中还可以在操作类型为停止的情况下,直接删除目标容器,从而完成对操作类型为停止的操作命令的响应的同时,避免宿主机中存在未运行的目标容器,导致不必要的资源浪费的问题。进一步地,本发明实施例中,在待运行应用属于服务类应用的情况下,可以在操作命令的操作类型为直接启动或重启的情况下,基于操作命令指示的服务文件中的指定命令行,生成运行命令。在操作类型为停止的情况下,直接响应于操作命令删除目标容器。在操作类型为使能操作的情况下,直接响应于操作命令将待运行应用加入宿主机的开机自启动项目中,以解决无法开机自启动的问题。进一步地,本发明实施例中,可以基于管理程序比如上述的systemed读取导出至宿主机的services文件,在操作类型为start的情况下,基于start服务先调用services文件中的ExecStartPre行命令,基于运行器默认执行服务类容器删除操作之后,再调用ExecStart行命令,由运行器通过镜像文件启动服务类容器中的应用。其中,ExecStartPre行命令、ExecStart行命令可以为前述第二指定命令行。由于会默认执行服务类容器删除操作,因此,可能会在不存在服务类容器的情况下执行删除操作,因此,可以忽略错误信息,以确保默认的删除操作可以正常进行。在操作类型为stop的情况下,可以基于stop服务先调用services文件中的ExecStop行命令,基于运行器执行容器停止操作之后,再调用ExecStopPost行命令,以基于运行器删除服务类容器。在操作类型为restart的情况下,可以基于restart服务先调用stop服务命令,再调用start服务命令。
计算机和软件工程中的执行是计算机或虚拟机执行计算机程序指令的过程。程序中的指令触发执行机器上的操作序列。这些执行动作根据程序中的指令的语义产生效果。用于计算机的程序可以在没有人工交互的批处理中执行,或者用户可以在解释器的交互式会话中键入命令。不同的Linux系统由不同类型的软件组成。在一种应用场景中,宿主机中安装的操作系统可以为Linux系统,待运行应用可以为支持Linux系统的以lmg格式打包的任一软件。
桌面类应用是依托桌面环境运行的一类应用,通过图形化的展示可以达到和用户友好交互的目的。容器是依托于宿主机运行的程序,容器本身没有桌面,在一种场景中,可以通过使用宿主机的图形服务、声音设备、打印设备等,达到使用桌面类容器中应用的目的。其中,Linux 中的桌面环境可以视为一个程序,它和内核不是绑定的,两者的开发也可以不同步,给不带界面的 Linux 系统安装上一个桌面环境,就能看到各种窗口并进行交互。在一种实现方式中,往往需要使用者手动定义所需挂载的目录、环境变量等等,并手动创建启动指令,以启动桌面类应用。这种方式中,需要使用者知晓每个挂载参数的含义,手动输入大量命令,且针对桌面类应用也需要依托于terminal运行。而命令参数往往较多且复杂,难以记忆,因此实现成本较高,使用便捷度较低。
图2是本发明实施例中提供的一种流程示意图,如图2所示,针对桌面类容器应用,可以通过双击桌面图标调用桌面文件第一指定命令行中的运行命令,相应地,宿主机可以执行步骤a1,响应于双击桌面图标的操作,调用桌面文件中第一指定命令行中的运行命令。接着,执行步骤a2,以调用运行器。其中,该桌面图标可以指的是待运行应用的应用图标。接着,可以执行步骤a3,在步骤a3中运行器可以获取传入的“包名-版本”及运行命令,即待运行应用的包信息以及运行命令。在步骤a4中,根据“包名-版本”定位描述文件位置。在步骤a5中,读取描述文件,获取应用标签、权限字段及多开字段,即,获取第一指定字段、第二指定字段以及第三指定字段。在步骤a6中,根据应用标签及传入的运行命令得到容器名称。在步骤a7中,基于容器名称检测是否存在目标容器,即,判断是否存在与容器名称对应的容器。在步骤a8中,不存在目标容器的情况下,通过权限字段,准备环境变量、需要挂载的设备、需要共享的目录;基于镜像名称、容器名称以及权限字段启动镜像,以运行应用。在步骤a9中,存在目标容器的情况下,获取目标容器的当前状态。如果当前状态为运行中,那么可以执行步骤a10,判断多开字段是否为1。如果为1,则执行步骤a11;如果不为1,则执行步骤a12。在步骤a11,通过目标容器,调用热启动方式,启动应用,以运行应用。在步骤a12,通过窗口/命令行提示用户,应用已经启动。
进一步地,当前状态可以包括运行中及已退出这两种状态,在不为运行中的情况下,当前状态可以为已退出。在不为已退出的情况下,当前状态可以为运行中。如果当前状态为已退出,那么可以执行步骤a13,获取退出码。在步骤a14中检测退出码是否为特定数码。如果为特定数码,可以执行步骤a15,检测退出容器的命令与传入的命令是否一致,即,检测目标容器对应的历史运行命令指示的应用信息与运行命令指示的应用信息是否一致。如果一致,则可以执行步骤a18重新启动目标容器,并基于目标容器运行应用。如果不一致,则可以执行步骤a16以及a17,以删除目标容器,并在成功删除之后通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用。其中,通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用可以具体指的是基于第二指定字段确定待运行应用的运行配置参数;基于镜像名称、容器名称以及运行配置参数,以容器的方式运行待运行应用。进一步地,如果退出码不为特定数码,则可以执行步骤a19,提示用户,容器出错,删除目标容器。
本发明实施例中,针对具备桌面环境的宿主机,通过运行器和桌面类应用的包名-版本启动桌面类容器应用。在使用桌面类的容器应用时,可以使用桌面图标方式启动,简化桌面类的容器应用启动方式,达到和宿主机桌面类应用一致的效果,这样,将设置和读取由运行器处理,使用者只需简单的执行触发图标的操作即可,可以降低使用成本,较为快速运行桌面类容器应用,提高使用的便捷度。
在一种应用场景中,针对命令类应用或服务类应用往往需要使用者手动进行配置,手动定义所需挂载的目录、环境变量等等,并手动创建启动指令,以启动应用。这种方式中,需要经过复杂繁琐的配置,且知晓每个配置项的含义,而命令参数往往较多且复杂,难以记忆,因此实现成本较高,使用便捷度较低。
图3是本发明实施例中提供的另一种流程示意图,如图3所示,针对命令类容器应用,用户可以输入运行命令,在步骤b1中,响应于用户输入的运行命令,调用运行器。在步骤b2中运行器可以获取传入的“包名-版本”及运行命令,即待运行应用的包信息以及运行命令。在步骤b3中,根据“包名-版本”定位描述文件位置,在步骤b4中,读取描述文件,获取应用标签及权限字,即,获取第一指定字段及第二指定字段。在步骤b5中,根据应用标签及传入的运行命令得到容器名称。在步骤b6中,基于容器名称检测是否存在目标容器,即,判断是否存在与容器名称对应的容器。在步骤b7中,不存在目标容器的情况下,通过权限字段,准备环境变量、以及需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用。在步骤b8中,存在目标容器的情况下,获取目标容器的当前状态。如果当前状态为运行中,则执行步骤b9,判断多开字段是否为1。如果为1,则执行步骤b11,如果不为1,则执行步骤b10。在步骤b10,通过窗口/命令行提示用户,应用已经运行。在步骤b11,通过目标容器,调用热启动方式,启动应用,以运行应用。
进一步地,如果当前状态为已退出,则执行步骤b12以及b13,以删除目标容器,并在成功删除之后通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用。
其中,基于不同的当前状态执行的处理分支的内容可以与桌面类容器应用的处理流程存在差异。本发明实施例中,通过运行器和命令类应用的包名-版本启动命令类容器应用,通过运行器隐藏复杂的命令类的容器启动的参数。一定程度上可以使得使用者无需太多配置,无需记忆大量复杂的命令、参数,配置简单,可以简化命令类容器应用的启动方式,可以降低使用成本,较为快速启动命令类容器应用,提高使用的便捷度。
图4是本发明实施例中提供的又一种流程示意图,如图4所示,针对服务类容器应用,在步骤c1中,接收用户输入的操作命令,在操作命令的类型为直接启动或重启的情况下,基于操作命令生成运行命令,并调用运行器,即,执行步骤c2。在步骤c3中运行器可以获取传入的“包名-版本”及运行命令。在步骤c4中,根据“包名-版本”定位描述文件位置,在步骤c5中,读取描述文件,获取应用标签以及权限字段。在步骤c6中,根据应用标签及传入的运行命令得到容器名称。在步骤c7中,基于容器名称检测是否存在目标容器。在步骤c14中,不存在目标容器的情况下,通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用。在步骤c8中,存在目标容器的情况下,获取目标容器的当前状态。如果当前状态为运行中,则在操作类型为直接启动的情况下,提示用户应用已运行,即,执行步骤c11。或者,在操作类型为重启的情况下,删除或退出目标容器,成功删除或退出目标容器后,通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用,即,执行步骤c9以及步骤c10。
进一步地,如果当前状态为已退出,则可以在操作类型为直接启动的情况下,删除目标容器,并在成功删除后,通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用,即,执行步骤c13。或者,在操作类型为重启的情况下,直接通过权限字段,准备环境变量、需要挂载的设备、以及需要共享的目录,并基于镜像名称和容器名称启动镜像,以运行应用,即,执行步骤c12。
本实施例中,基于不同的当前状态执行的处理分支的内容可以与桌面类/命令类容器应用的处理流程存在差异。本发明实施例中,通过运行器和服务类应用的包名-版本启动服务类容器应用,通过运行器隐藏复杂的服务类容器应用启动的参数。一定程度上可以使得使用者无需太多配置,无需记忆大量复杂的命令、参数,配置简单,可以简化服务类容器应用的启动方式,可以降低使用成本,较为快速启动服务类容器应用,提高使用的便捷度。
需要说明的是,本发明实施例中,在运行待运行应用之后,宿主机可以在检测到用户对待运行应用的关闭操作的情况下,退出运行中的待运行应用。本发明实施例中的命令可以理解为指令。
图5是本发明实施例提供的一种应用运行装置的结构框图。该实施例提供的应用运行装置应用于宿主机,所述装置包括:
第一获取模块201,用于响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段;
第一确定模块202,用于基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称;
第二确定模块203,用于基于所述第二指定字段确定所述待运行应用的运行配置参数;
第一运行模块204,用于基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
可选地,所述装置还包括:
调用模块,用于在所述待运行应用的类型为桌面类应用的情况下,若检测到对应用图标的触发,则基于所述应用图标对应的包信息,调用第一指定命令行中的所述运行命令,其中,所述应用图标属于所述待运行应用的镜像文件中的图片文件,所述第一指定命令行属于所述镜像文件中的桌面文件,其中,所述桌面文件以及所述图片文件预先被导出至所述宿主机;
或者,接收模块,用于在所述待运行应用的类型为命令类应用的情况下,接收用户输入的所述运行命令;
或者,生成模块,用于在所述待运行应用的类型为服务类应用的情况下,接收用户输入的操作命令,并基于所述操作命令指示的服务文件中的第二指定命令行,生成所述运行命令,其中,所述服务文件预先被导出至所述宿主机。
可选地,所述运行配置参数包括待加载环境变量、待挂载目录以及待挂载设备;
所述第一运行模块204,具体用于:
基于所述镜像名称、所述容器名称以及所述运行配置参数生成启动命令;
执行所述启动命令,以加载所述待加载环境变量,挂载所述待挂载目录以及所述待挂载设备,并基于所述镜像名称对应的镜像文件启动容器,在所启动的容器中运行所述待运行应用,其中,所述所启动的容器的名称被设置为所述容器名称。
可选地,所述装置还包括:
查找模块,用于在所述基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称之后,在所述宿主机中查找是否存在与所述容器名称对应的容器;
所述第二确定模块203,具体用于在不存在目标容器的情况下,基于所述第二指定字段确定所述待运行应用的运行配置参数,其中,所述目标容器是与所述容器名称对应的容器;或者
在存在所述目标容器的情况下,获取所述目标容器的当前状态;在所述当前状态为已退出的情况下,根据所述待运行应用的类型删除所述目标容器;在成功删除所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数。
可选的,所述装置还包括:第二获取模块,用于获取所述目标容器的退出码;
所述第二确定模块203,还具体用于:
在所述当前状态为已退出且所述待运行应用的类型为命令类应用或服务类应用的情况下,删除所述目标容器;或者,
在所述当前状态为已退出、所述待运行应用的类型为桌面类应用、所述退出码符合预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息不一致的情况下,删除所述目标容器。
可选地,所述装置还包括:
第二运行模块,用于在所述退出码符合所述预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息一致的情况下,重新启动所述目标容器,并基于所述目标容器运行所述待运行应用。
可选地,所述装置还包括:
第一输出模块,用于在所述退出码不符合所述预设条件的情况下,输出报错信息。
可选的,所述装置还包括:
第三获取模块,用于在所述当前状态为运行中且所述待运行应用的类型为桌面类应用或命令类应用的情况下,从所述描述文件中获取所述待运行应用对应的第三指定字段,所述第三指定字段用于表征所述待运行应用是否支持应用多开;
第三运行模块,用于若所述第三指定字段为特定值,则基于所述目标容器运行所述待运行应用;
第二输出模块,用于若所述第三指定字段不为所述特定值,则输出提示信息,所述提示信息用于表征所述待运行应用已被运行。
可选地,所述装置还包括:
第三输出模块,用于在所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出提示信息,所述提示信息用于表征所述待运行应用已被运行。
可选地,所述装置还包括:
第四获取模块,用于获取操作命令指示的操作类型,其中,所述运行命令基于所述操作命令生成;
所述第三输出模块,具体用于:在所述操作类型为直接启动、所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出所述提示信息。
可选地,所述装置还包括:
删除与退出模块,用于在所述操作类型为重启且所述当前状态为运行中的情况下,删除或退出所述目标容器;
第四运行模块,用于在成功删除或退出所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数,并基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
参照图6,是本发明实施例提供的一种电子设备的结构示意图。如图6所示,所述电子设备包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,具体可以存放至少一个可执行指令,所述可执行指令使所述处理器执行前述实施例的应用运行方法的步骤。
本发明实施例还提供一个或多个机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器实现上述方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的机器可读介质,如只读存储器(Read-OnlyMemory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本发明的保护之内。
Claims (14)
1.一种应用运行方法,其特征在于,应用于宿主机,所述方法包括:
响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段;
基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称;
基于所述第二指定字段确定所述待运行应用的运行配置参数;
基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
2.根据权利要求1所述的方法,其特征在于,在所述响应于运行命令之前,所述方法还包括:
在所述待运行应用的类型为桌面类应用的情况下,若检测到对应用图标的触发,则基于所述应用图标对应的包信息,调用第一指定命令行中的所述运行命令,其中,所述应用图标属于所述待运行应用的镜像文件中的图片文件,所述第一指定命令行属于所述镜像文件中的桌面文件,其中,所述桌面文件以及所述图片文件预先被导出至所述宿主机;
或者,在所述待运行应用的类型为命令类应用的情况下,接收用户输入的所述运行命令;
或者,在所述待运行应用的类型为服务类应用的情况下,接收用户输入的操作命令,并基于所述操作命令指示的服务文件中的第二指定命令行,生成所述运行命令,其中,所述服务文件预先被导出至所述宿主机。
3.根据权利要求1或2所述的方法,其特征在于,所述运行配置参数包括待加载环境变量、待挂载目录以及待挂载设备;
所述基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用的步骤,包括:
基于所述镜像名称、所述容器名称以及所述运行配置参数,生成启动命令;
执行所述启动命令,以加载所述待加载环境变量,挂载所述待挂载目录以及所述待挂载设备,并基于所述镜像名称对应的镜像文件启动容器,在所启动的容器中运行所述待运行应用,其中,所述所启动的容器的名称被设置为所述容器名称。
4.根据权利要求1或2所述的方法,其特征在于,在所述基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称之后,所述方法还包括:在所述宿主机中查找是否存在与所述容器名称对应的容器;
所述基于所述第二指定字段确定所述待运行应用的运行配置参数的步骤,包括:
在不存在目标容器的情况下,基于所述第二指定字段确定所述待运行应用的运行配置参数,其中,所述目标容器是与所述容器名称对应的容器;
或者,在存在所述目标容器的情况下,获取所述目标容器的当前状态;在所述当前状态为已退出的情况下,根据所述待运行应用的类型删除所述目标容器;在成功删除所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数。
5.根据权利要求4所述的方法,其特征在于,所述在所述当前状态为已退出的情况下,根据所述待运行应用的类型删除所述目标容器的步骤,包括:
在所述当前状态为已退出且所述待运行应用的类型为命令类应用或服务类应用的情况下,删除所述目标容器;
或者,在所述当前状态为已退出且所述待运行应用的类型为桌面类应用的情况下,获取所述目标容器的退出码;在所述退出码符合预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息不一致的情况下,删除所述目标容器。
6.根据权利要求5所述的方法,其特征在于,在所述获取所述目标容器的退出码之后,所述方法还包括:
在所述退出码符合所述预设条件且所述目标容器对应的历史运行命令指示的应用信息与所述运行命令指示的应用信息一致的情况下,重新启动所述目标容器,并基于所述目标容器运行所述待运行应用。
7.根据权利要求5所述的方法,其特征在于,在所述获取所述目标容器的退出码之后,所述方法还包括:
在所述退出码不符合所述预设条件的情况下,输出报错信息。
8.根据权利要求4所述的方法,其特征在于,在所述获取所述目标容器的当前状态之后,所述方法还包括:
在所述当前状态为运行中且所述待运行应用的类型为桌面类应用或命令类应用的情况下,从所述描述文件中获取所述待运行应用对应的第三指定字段,所述第三指定字段用于表征所述待运行应用是否支持应用多开;
若所述第三指定字段为特定值,则基于所述目标容器运行所述待运行应用;
若所述第三指定字段不为所述特定值,则输出提示信息,所述提示信息用于表征所述待运行应用已被运行。
9.根据权利要求4所述的方法,其特征在于,在所述获取所述目标容器的当前状态之后,所述方法还包括:
在所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出提示信息,所述提示信息用于表征所述待运行应用已被运行。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
获取操作命令指示的操作类型,其中,所述运行命令基于所述操作命令生成;
所述在所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出提示信息的步骤,包括:在所述操作类型为直接启动、所述当前状态为运行中且所述待运行应用的类型为服务类应用的情况下,输出所述提示信息。
11.根据权利要求10所述的方法,其特征在于,在所述获取操作命令指示的操作类型之后,所述方法还包括:
在所述操作类型为重启且所述当前状态为运行中的情况下,删除或退出所述目标容器;
在成功删除或退出所述目标容器后基于所述第二指定字段确定所述待运行应用的运行配置参数,并基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
12.一种应用运行装置,其特征在于,应用于宿主机,所述装置包括:
第一获取模块,用于响应于运行命令,根据所述运行命令传入的待运行应用的包信息,定位与所述包信息对应的描述文件,并从所述描述文件中获取所述待运行应用对应的第一指定字段以及第二指定字段;
第一确定模块,用于基于所述第一指定字段确定所述待运行应用对应的镜像文件的镜像名称以及所述待运行应用对应的容器名称;
第二确定模块,用于基于所述第二指定字段确定所述待运行应用的运行配置参数;
第一运行模块,用于基于所述镜像名称、所述容器名称以及所述运行配置参数,以容器的方式运行所述待运行应用。
13.一种电子设备,其特征在于,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放可执行指令,所述可执行指令使所述处理器执行如权利要求1-11任一项所述的方法。
14.一个或多个机器可读介质,其特征在于,其上存储有指令,当由一个或多个处理器执行时,使得所述处理器执行如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210543501.9A CN114721784B (zh) | 2022-05-19 | 2022-05-19 | 应用运行方法、装置、电子设备及可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210543501.9A CN114721784B (zh) | 2022-05-19 | 2022-05-19 | 应用运行方法、装置、电子设备及可读介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114721784A true CN114721784A (zh) | 2022-07-08 |
CN114721784B CN114721784B (zh) | 2022-08-30 |
Family
ID=82231915
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210543501.9A Active CN114721784B (zh) | 2022-05-19 | 2022-05-19 | 应用运行方法、装置、电子设备及可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114721784B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076005A (zh) * | 2023-10-16 | 2023-11-17 | 龙芯中科技术股份有限公司 | 一种应用运行方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107368339A (zh) * | 2017-07-25 | 2017-11-21 | 上海携程商务有限公司 | 容器入口程序运行方法、系统、设备及存储介质 |
US20180278724A1 (en) * | 2017-03-22 | 2018-09-27 | Mastercard International Incorporated | Systems and methods for automated application deployment management |
CN110874263A (zh) * | 2019-11-06 | 2020-03-10 | 北京宝兰德软件股份有限公司 | docker容器实例监控方法及装置 |
CN110888655A (zh) * | 2019-11-14 | 2020-03-17 | 中国民航信息网络股份有限公司 | 一种应用发布方法及装置 |
CN113672334A (zh) * | 2021-02-04 | 2021-11-19 | 中国科学技术大学 | 一种容器管理方法及装置 |
-
2022
- 2022-05-19 CN CN202210543501.9A patent/CN114721784B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180278724A1 (en) * | 2017-03-22 | 2018-09-27 | Mastercard International Incorporated | Systems and methods for automated application deployment management |
CN107368339A (zh) * | 2017-07-25 | 2017-11-21 | 上海携程商务有限公司 | 容器入口程序运行方法、系统、设备及存储介质 |
CN110874263A (zh) * | 2019-11-06 | 2020-03-10 | 北京宝兰德软件股份有限公司 | docker容器实例监控方法及装置 |
CN110888655A (zh) * | 2019-11-14 | 2020-03-17 | 中国民航信息网络股份有限公司 | 一种应用发布方法及装置 |
CN113672334A (zh) * | 2021-02-04 | 2021-11-19 | 中国科学技术大学 | 一种容器管理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117076005A (zh) * | 2023-10-16 | 2023-11-17 | 龙芯中科技术股份有限公司 | 一种应用运行方法、装置、电子设备及存储介质 |
CN117076005B (zh) * | 2023-10-16 | 2024-03-01 | 龙芯中科技术股份有限公司 | 一种应用运行方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114721784B (zh) | 2022-08-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113312037B (zh) | 应用于微服务的数据处理方法、装置、设备和存储介质 | |
US7287190B2 (en) | Simultaneous execution of test suites on different platforms | |
CN106406961A (zh) | 一种基于浏览器加载、提供应用程序的方法、装置 | |
JP6182160B2 (ja) | 実行中のプロセスへのコードの動的挿入 | |
CN111708702A (zh) | 模拟测试方法、客户端、服务端、系统与可读存储介质 | |
WO2021164367A1 (zh) | 一种容器镜像的提供方法、加载方法及相关设备和系统 | |
CN113407383B (zh) | 主备系统切换方法、装置、服务器及主备系统 | |
CN111427594B (zh) | 应用程序运行方法及装置 | |
CN110968331A (zh) | 应用程序运行的方法和装置 | |
CN114721784B (zh) | 应用运行方法、装置、电子设备及可读介质 | |
CN111651169B (zh) | 基于web容器的区块链智能合约运行方法及系统 | |
CN113760763A (zh) | 软件测试方法、设备、服务器和系统 | |
CN111078256B (zh) | 自动化测试环境的升级方法、终端及可读存储介质 | |
CN110083366B (zh) | 应用运行环境的生成方法、装置、计算设备及存储介质 | |
CN117931219A (zh) | 前端项目实现方法、装置、电子设备和存储介质 | |
CN113821226A (zh) | 一种onie系统安装方法、装置、设备及介质 | |
CN112491940B (zh) | 代理服务器的请求转发方法及装置、存储介质及电子设备 | |
CN116756016A (zh) | 多浏览器测试方法、装置、设备、介质及程序产品 | |
CN109492144B (zh) | 软件系统的关联关系分析方法、装置和存储介质 | |
CN116069366A (zh) | 客户端应用程序更新方法及装置、存储介质及电子设备 | |
CN113791778B (zh) | 软件项目生成方法及装置、电子设备和存储介质 | |
CN111240589A (zh) | 基于分区隔离的系统管理方法、装置、设备及存储介质 | |
CN114756247B (zh) | 一种系统部署方法、装置、设备及存储介质 | |
CN116303067B (zh) | 一种基于云测试平台的测试方法、装置、设备以及介质 | |
CN114780195B (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 |