CN112463165A - 一种程序镜像构建方法、系统、计算设备及可读存储介质 - Google Patents

一种程序镜像构建方法、系统、计算设备及可读存储介质 Download PDF

Info

Publication number
CN112463165A
CN112463165A CN202110145387.XA CN202110145387A CN112463165A CN 112463165 A CN112463165 A CN 112463165A CN 202110145387 A CN202110145387 A CN 202110145387A CN 112463165 A CN112463165 A CN 112463165A
Authority
CN
China
Prior art keywords
center
image file
compiling
server
target
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
Application number
CN202110145387.XA
Other languages
English (en)
Other versions
CN112463165B (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.)
Beijing Paratera Technology Co ltd
Original Assignee
Beijing Paratera 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 Beijing Paratera Technology Co ltd filed Critical Beijing Paratera Technology Co ltd
Priority to CN202110145387.XA priority Critical patent/CN112463165B/zh
Publication of CN112463165A publication Critical patent/CN112463165A/zh
Application granted granted Critical
Publication of CN112463165B publication Critical patent/CN112463165B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Abstract

本发明公开了一种程序镜像构建方法,适于在计算设备中执行,计算设备与第一镜像中心、镜像构建服务器通信连接,镜像构建服务器与多个编译服务器连接,方法包括:获取应用程序的基本信息;根据基本信息生成应用程序的第一镜像文件;将第一镜像文件上传到第一镜像中心;通过镜像构建服务器启动编译服务器对应用程序的编译过程,以便生成目标镜像文件。本发明一并公开了相应的系统、计算设备及可读存储介质。

Description

一种程序镜像构建方法、系统、计算设备及可读存储介质
技术领域
本发明涉及高性能计算领域,尤其涉及一种程序镜像构建方法、系统、计算设备及可读存储介质。
背景技术
在超级计算中心中运行的应用程序,在编译时需要该超级计算中心的网卡、GPU的硬件驱动、CPU工具链以及MPI库等信息,而用户本地缺乏这样的软硬件环境,需要登录该超级计算中心对应的特定编译服务器进行编译,如果当前应用程序需要在多个超算中心运行,需要分别将应用程序代码传输到多个超算中心对应的多个编译服务器上分别进行编译,编译过程繁琐,不易操作。同时,当多个用户使用同一个超算账号编译不同应用程序时,由于只有一个工作目录,应用所需的环境变量保存于内存中,退出登录就会丢失,每次登录后需重新手工加载。
发明内容
为此,本发明提供了一种程序镜像构建方法、系统、计算设备及可读存储介质,以力图解决或者至少缓解上面存在的问题。
根据本发明的一个方面,提供一种程序镜像构建方法,适于在计算设备中执行,计算设备与第一镜像中心、镜像构建服务器通信连接,镜像构建服务器与多个编译服务器连接,方法包括:获取应用程序的基本信息;根据基本信息生成应用程序的第一镜像文件;将第一镜像文件上传到第一镜像中心;通过镜像构建服务器启动编译服务器对应用程序的编译过程,以便生成目标镜像文件。
可选的,在根据本发明的程序镜像构建方法中,获取应用程序的基本信息包括:根据用户输入,获取应用程序的编程语言类型、应用程序代码文件的路径、依赖的第三方库路径、应用程序代码文件的加密密码以及应用程序对应的目标超算中心,其中目标超算中心是用户从超算中心列表中选择的用于执行应用程序的超算中心,超算中心列表从镜像构建服务器中获得,目标超算中心包括一个或多个。
可选的,在根据本发明的程序镜像构建方法中,根据基本信息生成应用程序的第一镜像文件包括:根据基本信息生成一个dockerfile;制作应用程序的编译脚本;生成一个守护进程文件;根据dockerfile、编译脚本、守护进程文件生成第一镜像文件。
可选的,在根据本发明的程序镜像构建方法中,通过镜像构建服务器启动编译服务器对应用程序的编译过程,以便生成目标镜像文件包括:根据目标超算中心获取对应的编译服务器,编译服务器包括一个或多个;登录镜像构建服务器,并通过镜像构建服务器的Ansible在目标超算中心对应的编译服务器中启动第一镜像文件,以便编译成目标镜像文件。
可选的,在根据本发明的程序镜像构建方法中,通过镜像构建服务器的Ansible在目标超算中心对应的编译服务器中启动第一镜像文件,并编译成目标镜像文件包括:通过镜像构建服务器使目标超算中心对应的编译服务器从第一镜像中心拉取第一镜像文件,以便编译服务器挂载关联库并将第一镜像文件编译成目标镜像文件,关联库包括IB网卡、GPU硬件驱动库以及MPI库。
可选的,在根据本发明的程序镜像构建方法中,编译服务器挂载关联库并将第一镜像文件编译成目标镜像文件包括:根据关联库对第一镜像文件进行编译,并获得目标镜像文件;在目标镜像文件中加入特征码。
可选的,在根据本发明的程序镜像构建方法中,特征码根据应用程序的名称、时间戳、目标超算中心的名称、第一镜像文件的名称以及加密密码,通过SHA1算法获得。
可选的,在根据本发明的程序镜像构建方法中,根据关联库对第一镜像文件进行编译包括:若应用程序代码文件已加密,需要获取所述应用程序代码文件的加密密码。
可选的,在根据本发明的程序镜像构建方法中,编译服务器与目标镜像中心通信连接,目标镜像中心与超算中心通信连接,方法还包括:编译服务器将目标镜像文件推送到目标镜像中心,以便超算中心从目标镜像中心拉取相应的目标镜像文件,并运行目标镜像文件。
可选的,在根据本发明的程序镜像构建方法中,还包括:目标镜像中心接收到目标镜像文件后,对目标镜像文件的特征码进行校验。
根据本发明的又一个方面,提供一种程序镜像构建系统,包括镜像构建客户端、镜像构建服务器、第一镜像中心、编译服务器,其中,镜像构建客户端,适于执行如上的程序镜像构建方法中的任一方法;镜像构建服务器,适于完成在编译服务器上启动对应用程序的编译过程,以便生成目标镜像文件;第一镜像中心,适于存储镜像构建客户端生成的第一镜像文件;编译服务器,适于对应用程序代码进行编译。
可选的,在根据本发明的程序镜像构建系统中,还包括目标镜像中心、超算中心,其中,目标镜像中心,适于存储编译服务器编译完成的目标镜像文件,以便超算中心拉取相应的目标镜像文件,并运行目标镜像文件;超算中心,适于拉取并运行相应的目标镜像文件。
根据本发明的又一个方面,提供一种计算设备,包括:至少一个处理器;以及存储器,存储有程序指令,其中,程序指令被配置为适于由至少一个处理器执行,程序指令包括用于执行如上的程序镜像构建方法的指令。
根据本发明的又一方面,提供一种存储有程序指令的可读存储介质,当程序指令被计算设备读取并执行时,使得计算设备执行如上的程序镜像构建方法。
在本发明的程序镜像构建方法中,根据应用程序的编译和运行所需的基本配置信息,将应用程序代码制作成第一镜像文件并推送到第一镜像中心,通过镜像构建服务器启动编译服务器的编译过程,编译服务器直接从第一镜像中心获取应用程序代码镜像,即使该应用程序需要多个编译服务器进行编译,用户也只需要将应用程序的第一镜像文件向第一镜像中心传输一次,避免向多个编译器拷贝应用程序,简化了应用程序的整个编译过程,并且多个编译服务器可同时下载、编译应用程序。同时,将应用程序的基本信息(即应用程序编译和运行的配置信息)包含在第一镜像文件中,而不是直接在编译服务器上设置,避免用户退出后重新登录时配置的丢失,进而需要再次重新进行手动加载。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的程序镜像构建系统100 的示意图;
图2示出了根据本发明一个实施例的计算设备200的框图;
图3示出了根据本发明一个实施例的程序镜像构建方法300的流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的程序镜像构建系统100的示意图。如图1所示,所述程序镜像构建系统包括镜像构建客户端110、镜像构建服务器120、第一镜像中心130、编译服务器140(包括编译服务器140-1、编译服务器140-2……编译服务器140-n)、目标镜像中心150、超算中心160(包括超算中心160-1、超算中心160-2……超算中心160-n),相互通信连接。应当指出,图1中的应用发布系统仅为示例性的,在具体实践中,可以根据需求具体设计。
镜像构建客户端110,可以是用户的终端设备,通常为桌面计算机、笔记本计算机等个人配置计算机,但不限于此。镜像构建客户端110可以根据用户的应用程序的基本信息生成应用程序的第一镜像文件,也称为代码镜像文件,并发送至第一镜像中心130进行存储。
镜像构建服务器120与镜像构建客户端110通信连接,可以给镜像构建客户端提供超算中心列表信息,以供用户在进行基本信息设置是选择目标超算中心,镜像构建服务器120还与各个编译服务器140通信连接,能够通过Ansible启动编译服务器的编译工作,实现了通过镜像构建客户端在编译服务器上进行编译的工作。
编译服务器140与第一镜像中心130通信连接,不同的编译服务器对应不同的超算中心,可以挂载不同的关联库,例如IB网卡、GPU硬件驱动库以及MPI库,编译服务器140从第一镜像中心130上获取应用程序镜像文件(即代码镜像文件),以代码镜像文件为基础,挂载IB网卡、GPU硬件驱动库以及MPI库编译成目标镜像文件。
目标镜像中心150适于存储编译服务器140编译的目标镜像文件,以便超算中心160获取相应的目标镜像文件进行执行。
超算中心160适于从目标镜像中心150获取目标镜像文件并运行,超算中心有多个,具有不同的硬件和通信标准。
图1中所示的程序镜像构建系统100中的镜像构建客户端110可以通过计算设备实现,图2示出了根据本发明一个实施例的计算设备200的框图。需要说明的是,图2所示的计算设备200仅为一个示例,在实践中,用于实施本发明的程序镜像构建方法的计算设备可以是任意型号的设备,其硬件配置情况可以与图2所示的计算设备200相同,也可以与图2所示的计算设备200不同。实践中用于实施本发明的程序镜像构建方法的计算设备可以对图2所示的计算设备200的硬件组件进行增加或删减,本发明对计算设备的具体硬件配置情况不做限制。
如图2所示,在基本配置202中,计算设备200典型地包括系统存储器206和一个或者多个处理器204。存储器总线208可以用于在处理器204和系统存储器206之间的通信。
取决于期望的配置,处理器204可以是任何类型的处理,包括但不限于:微处理器(µP)、微控制器(µC)、数字信息处理器(DSP)或者它们的任何组合。处理器204可以包括诸如一级高速缓存210和二级高速缓存212之类的一个或者多个级别的高速缓存、处理器核心214和寄存器216。示例的处理器核心214可以包括运算逻辑单元(ALU)、浮点数单元(FPU)、数字信号处理核心(DSP核心)或者它们的任何组合。示例的存储器控制器218可以与处理器204一起使用,或者在一些实现中,存储器控制器218可以是处理器204的一个内部部分。
取决于期望的配置,系统存储器206可以是任意类型的存储器,包括但不限于:易失性存储器(诸如RAM)、非易失性存储器(诸如ROM、闪存等)或者它们的任何组合。计算设备中的物理内存通常指的是易失性存储器RAM,磁盘中的数据需要加载至物理内存中才能够被处理器204读取。系统存储器206可以包括操作系统220、一个或者多个应用222以及程序数据224。在一些实施方式中,应用222可以布置为在操作系统上由一个或多个处理器204利用程序数据224执行指令。操作系统220例如可以是Linux、Windows等,其包括用于处理基本系统服务以及执行依赖于硬件的任务的程序指令。应用222包括用于实现各种用户期望的功能的程序指令,应用222例如可以是浏览器、即时通讯软件、软件开发工具(例如集成开发环境IDE、编译器等)等,但不限于此。当应用222被安装到计算设备200中时,可以向操作系统220添加驱动模块。
在计算设备200启动运行时,处理器204会从存储器206中读取操作系统220的程序指令并执行。应用222运行在操作系统220之上,利用操作系统220以及底层硬件提供的接口来实现各种用户期望的功能。当用户启动应用222时,应用222会加载至存储器206中,处理器204从存储器206中读取并执行应用222的程序指令。
计算设备200还包括储存设备232,储存设备232包括可移除储存器236和不可移除储存器238,可移除储存器236和不可移除储存器238均与储存接口总线234连接。
计算设备200还可以包括有助于从各种接口设备(例如,输出设备242、外设接口244和通信设备246)到基本配置202经由总线/接口控制器230的通信的接口总线240。示例的输出设备242包括图形处理单元248和音频处理单元250。它们可以被配置为有助于经由一个或者多个A/V端口252与诸如显示器或者扬声器之类的各种外部设备进行通信。示例外设接口244可以包括串行接口控制器254和并行接口控制器256,它们可以被配置为有助于经由一个或者多个I/O端口258和诸如输入设备(例如,键盘、鼠标、笔、语音输入设备、触摸输入设备)或者其他外设(例如打印机、扫描仪等)之类的外部设备进行通信。示例的通信设备246可以包括网络控制器260,其可以被布置为便于经由一个或者多个通信端口264与一个或者多个其他计算设备262通过网络通信链路的通信。
网络通信链路可以是通信介质的一个示例。通信介质通常可以体现为在诸如载波或者其他传输机制之类的调制数据信号中的计算机可读指令、数据结构、程序模块,并且可以包括任何信息递送介质。“调制数据信号”可以这样的信号,它的数据集中的一个或者多个或者它的改变可以在信号中编码信息的方式进行。作为非限制性的示例,通信介质可以包括诸如有线网络或者专线网络之类的有线介质,以及诸如声音、射频(RF)、微波、红外(IR)或者其它无线介质在内的各种无线介质。这里使用的术语计算机可读介质可以包括存储介质和通信介质二者。
在根据本发明的计算设备200中,应用222包括用于执行本发明的程序镜像构建方法300的指令,该指令可以指示处理器204执行本发明的程序镜像构建方法300。
图3示出了根据本发明一个实施例的程序镜像构建方法300的流程图。适于在计算设备(如图2所示的计算设备)中执行。所述方法始于步骤S310,获取应用程序的基本信息。
根据本发明的一个实施例,当镜像构建客户端运行程序镜像构建方法300时,获取用户根据提示信息输入的应用程序的基本信息,其中包括应用程序的名称、应用程序代码文件的路径信息、依赖的第三方库路径信息,本步骤中,用户还需要根据镜像构建服务器提供的超算中心列表和编程语言列表,选择应用程序所适配的目标超算中心和应用程序的编程代码类别,比如,用户通过C++语言编写的应用程序ABC,希望适配在超算中心1和超算中心2上运行,本步骤中,根据用户输入信息获取到该应用程序的上述基本信息。
其中,应用程序所适配的超算中心(即目标超算中心)可以存储在一个本地文件(例如info文件)中,以供后续步骤中使用。
同时,在本步骤中,还会根据用户选择是否对应用程序代码文件进行加密,确定相应的加密密码,如果用户选择对代码文件进行加密,获取用户输入的加密密码,否则,不需要获取加密密码。例如,本实施例中,用户选择对代码文件进行加密,并输入加密密码“1234”。
随后进入步骤S320,根据步骤S310中用户提供的应用程序的基本信息生成该应用程序的第一镜像文件。
根据本发明的一个实施例,所述第一镜像文件通过docker容器实现,首先根据步骤S310中获取的基本信息生成dockerfile,并制作应用程序的编译脚本(例如:make_compile),生成一个守护进程文件monitor,随后,根据上述dockerfile、编译脚本以及守护进程文件生成应用程序的第一镜像文件,以上述ABC应用程序为例,本步骤通过dockerbuild指令生成第一镜像文件code_ABC.img。
随后进入步骤S330,将步骤S320中生成的第一镜像文件发送至第一镜像中心,对应上述docker容器,第一镜像中心为docker镜像中心。docker镜像中心与各个编译服务器连接,任意一个编译服务器都可以从第一镜像中心(即docker镜像中心)获取第一镜像文件,完成编译,避免用户终端分别向各个编译服务器发送应用程序代码,简化了编译过程。
第一镜像文件上传结束后,进入步骤S340,通过应用构建服务器在编译服务器上启动应用程序的编译。
根据本发明的一个实施例,用户根据本发明的程序镜像构建方法通过镜像构建客户端登录镜像构建服务器,在应用构建服务器通过Ansible在相应的编译服务器上启动应用程序的编译过程,相应的编译服务器是根据本地存储的目标超算中心(info文件)获得的,不同的超算中心对应不同的编译服务器,另外,在该步骤中,还需要告知编译服务器第一镜像中心的用户名和密码,例如可以通过restful请求的头部包含这些数据,以便编译服务器能够顺利从第一镜像中心获得第一镜像文件。
以步骤S310中的info文件为例,其中的超算中心1和超算中心2分别对应编译服务器1和编译服务器2,编译服务器1和编译服务器2通过docker pull从第一镜像中心(docker镜像中心)上拉取应用程序的第一镜像文件code_ABC.img,并启动。如果代码镜像已启动,判断是否要重新启动。在启动时,通过docker run指令启动代码镜像,并通过加-v参数挂载IB网卡和GPU的硬件驱动库以及MPI库。
随后进入步骤S350,根据获取到的第一镜像文件以及挂载的关联库进行编译,通过docker exec指令调用编译指令,例如:docker exec -it x /bin/make-compile,在生成的目标镜像文件中加入特征码。目标镜像文件通过singluarity容器实现,本步骤通过singluarity build生成SIF文件。如果步骤S310中,用户对应用程序代码文件进行了加密,本步骤需要用户提供相应的加密密码。
根据本发明的一个实施例,特征码根据应用程序的名称、时间戳、目标超算中心的名称、第一镜像文件的名称以及应用程序代码文件的加密密码,通过SHA1算法获得。计算公式如下:
特征码=SHA1(应用程序的名称+时间戳+目标超算中心的名称+第一镜像文件的名称+应用程序代码文件的加密密码)。同时将这些参数放到一个参数文件中。
随后进入步骤S360,将目标镜像文件推送到目标镜像中心。根据本发明的一个实施例,目标镜像中心为singularity镜像中心,在接收到目标镜像文件时,根据参数文件中的参数,通过SHA1算法生成特征码,当生成的特征码和步骤S360中植入SIF文件中的特征码一致时,说明SIF文件有效,接收目标镜像文件。
随后进入步骤S370,在目标超算中心拉取目标镜像文件运行应用程序。运行指令为:singularity exec。
根据本发明的程序镜像构建方法,根据应用程序的编译和运行所需的基本配置信息,将应用程序代码制作成第一镜像文件并推送到第一镜像中心,并通过镜像构建服务器启动编译服务器的编译过程,编译服务器直接从所述第一镜像中心获取应用程序代码镜像,即使该应用程序需要多个编译服务器进行编译,用户也只需要将应用程序的第一镜像文件向第一镜像中心传输一次,避免向多个编译器拷贝应用程序,简化了应用程序的整个编译过程,并且多个编译服务器可同时下载、编译应用程序。同时,将应用程序的基本信息(即应用程序的编译和运行的配置信息)包含在第一镜像文件中,而不是直接在编译服务器上设置,避免用户退出后重新登录时配置的丢失,进而需要用户重新进行手动加载。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,计算设备一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的程序镜像构建方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。

Claims (14)

1.一种程序镜像构建方法,适于在计算设备中执行,所述计算设备与第一镜像中心、镜像构建服务器通信连接,所述镜像构建服务器与多个编译服务器连接,所述方法包括:
获取应用程序的基本信息;
根据所述基本信息生成所述应用程序的第一镜像文件;
将所述第一镜像文件上传到所述第一镜像中心;
通过所述镜像构建服务器启动所述编译服务器对所述应用程序的编译过程,以便生成目标镜像文件。
2.如权利要求1所述的方法,其中,所述获取应用程序的基本信息包括:
根据用户输入,获取所述应用程序的编程语言类型、应用程序代码文件的路径、依赖的第三方库路径、应用程序代码文件的加密密码以及应用程序对应的目标超算中心,其中所述目标超算中心是用户从超算中心列表中选择的用于执行所述应用程序的超算中心,所述超算中心列表从所述镜像构建服务器中获得,所述目标超算中心包括一个或多个。
3.如权利要求1或2所述的方法,其中,所述根据所述基本信息生成所述应用程序的第一镜像文件包括:
根据所述基本信息生成一个dockerfile;
制作所述应用程序的编译脚本;
生成一个守护进程文件;
根据所述dockerfile、编译脚本、守护进程文件生成第一镜像文件。
4.如权利要求2所述的方法,其中,所述通过所述镜像构建服务器启动所述编译服务器对所述应用程序的编译过程,以便生成目标镜像文件包括:
根据所述目标超算中心获取对应的编译服务器,所述编译服务器包括一个或多个;
登录所述镜像构建服务器,并通过所述镜像构建服务器的Ansible在所述目标超算中心对应的编译服务器中启动第一镜像文件,以便编译成目标镜像文件。
5.如权利要求4所述的方法,其中,所述通过所述镜像构建服务器的Ansible在所述目标超算中心对应的编译服务器中启动第一镜像文件,以便编译成目标镜像文件包括:
通过所述镜像构建服务器使所述目标超算中心对应的编译服务器从所述第一镜像中心拉取所述第一镜像文件,以便所述编译服务器挂载关联库并将所述第一镜像文件编译成目标镜像文件,所述关联库包括IB网卡、GPU硬件驱动库以及MPI库。
6.如权利要求5所述的方法,其中,所述编译服务器挂载关联库并将所述第一镜像文件编译成目标镜像文件包括:
根据所述关联库对所述第一镜像文件进行编译,并获得目标镜像文件;
在所述目标镜像文件中加入特征码。
7.如权利要求6所述的方法,其中,所述特征码根据应用程序的名称、时间戳、目标超算中心的名称、第一镜像文件的名称以及应用程序代码文件的加密密码,通过SHA1算法获得。
8.如权利要求6或7所述的方法,其中,所述根据所述关联库对所述第一镜像文件进行编译包括:
若所述应用程序代码文件已加密,需要获取所述应用程序代码文件的加密密码。
9.如权利要求4-7中任意一项所述的方法,所述编译服务器与目标镜像中心通信连接,所述目标镜像中心与所述超算中心通信连接,所述方法还包括:
所述编译服务器将所述目标镜像文件推送到所述目标镜像中心,以便超算中心从所述目标镜像中心拉取相应的目标镜像文件,并运行所述目标镜像文件。
10.如权利要求9所述的方法,还包括:
所述目标镜像中心接收到所述目标镜像文件后,对所述目标镜像文件的特征码进行校验。
11.一种程序镜像构建系统,包括镜像构建客户端、镜像构建服务器、第一镜像中心和编译服务器,其中,
镜像构建客户端,适于执行如权利要求1-10中的任意一项所述的方法;
镜像构建服务器,适于完成在所述编译服务器上启动对所述应用程序的编译过程,以便生成目标镜像文件;
第一镜像中心,适于存储所述镜像构建客户端生成的第一镜像文件;
编译服务器,适于对应用程序代码进行编译。
12.如权利要求11所述的系统,还包括目标镜像中心和超算中心,其中,
目标镜像中心,适于存储所述编译服务器编译完成的目标镜像文件,以便所述超算中心拉取相应的目标镜像文件,并运行所述目标镜像文件;
所述超算中心,适于拉取并运行相应的目标镜像文件。
13.一种计算设备,包括:
存储器;
一个或多个处理器;
一个或多个程序,其中所述一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行根据权利要求1-10中任一项所述的方法的指令。
14.一种存储一个或多个程序的计算机可读存储介质,所述一个或多个程序包括指令,所述指令当计算设备执行时,使得所述计算设备执行根据权利要求1-10中任一项所述的方法。
CN202110145387.XA 2021-02-03 2021-02-03 一种程序镜像构建方法、系统、计算设备及可读存储介质 Active CN112463165B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110145387.XA CN112463165B (zh) 2021-02-03 2021-02-03 一种程序镜像构建方法、系统、计算设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110145387.XA CN112463165B (zh) 2021-02-03 2021-02-03 一种程序镜像构建方法、系统、计算设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN112463165A true CN112463165A (zh) 2021-03-09
CN112463165B CN112463165B (zh) 2021-06-04

Family

ID=74802777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110145387.XA Active CN112463165B (zh) 2021-02-03 2021-02-03 一种程序镜像构建方法、系统、计算设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN112463165B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485795A (zh) * 2021-07-26 2021-10-08 四川万益能源科技有限公司 一种基于多种类型项目的自动化容器启动方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283521A1 (en) * 2004-06-18 2005-12-22 Whan Wen J Centrally hosted monitoring system
CN108572889A (zh) * 2018-03-12 2018-09-25 新华三云计算技术有限公司 一种系统还原方法及装置
CN110704098A (zh) * 2019-09-29 2020-01-17 科大国创软件股份有限公司 一种根据应用包特征自动生成容器镜像的智能打包方法
CN111596932A (zh) * 2020-06-22 2020-08-28 腾讯科技(深圳)有限公司 一种镜像文件生成方法、装置和计算机可读存储介质
CN111614488A (zh) * 2020-04-21 2020-09-01 云知声智能科技股份有限公司 一种部署异构超算平台的方法及装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050283521A1 (en) * 2004-06-18 2005-12-22 Whan Wen J Centrally hosted monitoring system
CN108572889A (zh) * 2018-03-12 2018-09-25 新华三云计算技术有限公司 一种系统还原方法及装置
CN110704098A (zh) * 2019-09-29 2020-01-17 科大国创软件股份有限公司 一种根据应用包特征自动生成容器镜像的智能打包方法
CN111614488A (zh) * 2020-04-21 2020-09-01 云知声智能科技股份有限公司 一种部署异构超算平台的方法及装置
CN111596932A (zh) * 2020-06-22 2020-08-28 腾讯科技(深圳)有限公司 一种镜像文件生成方法、装置和计算机可读存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JACKLIU16: "docker镜像的制作(二)----新手指南:如何将应用打包成为 Docker 镜像?", 《HTTPS://BLOG.CSDN.NET/JACKLIU16/ARTICLE/DETAILS/79323583》 *
吴双艳: "基于Docker容器调度优化方法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113485795A (zh) * 2021-07-26 2021-10-08 四川万益能源科技有限公司 一种基于多种类型项目的自动化容器启动方法
CN113485795B (zh) * 2021-07-26 2024-03-26 四川万益能源科技有限公司 一种基于多种类型项目的自动化容器启动方法

Also Published As

Publication number Publication date
CN112463165B (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
CN110083382B (zh) 跨平台内容管理和分发系统
JP5650240B2 (ja) オフデバイス・サービスを用いた実行コードのランタイム・プロビジョニングのための技術
US8495615B2 (en) Method, system and computer program for distributing software patches
WO2017166446A1 (zh) 漏洞修复方法和装置
US20080066063A1 (en) System and method for preparing runtime checks
Adekotujo et al. A comparative study of operating systems: Case of windows, unix, linux, mac, android and ios
CN112988252B (zh) 一种操作系统启动方法及计算设备
CN113761482A (zh) 一种程序代码保护方法和装置
CN114691240A (zh) 驱动硬件配置信息加载方法、装置和系统,以及计算设备
CN111049889B (zh) 一种静态资源上传方法、装置、集成服务器和系统
CN112947976A (zh) 一种操作系统升级方法、计算设备及存储介质
CN112463165B (zh) 一种程序镜像构建方法、系统、计算设备及可读存储介质
CN113867847A (zh) 一种异常插件处理方法、装置及计算设备
CN111070662B (zh) 一种3d打印方法、设备及存储介质
CN110532016B (zh) 版本管理方法、版本更新方法和版本管理系统
CN111679837A (zh) 系统安装控制方法、控制系统及计算设备
US10019344B1 (en) Computer implemented system and method and computer program product for a test framework for orchestration workflows
CN112631915B (zh) 一种pcie设备软件仿真的方法、系统、设备及介质
CN106126303B (zh) Linux操作系统的安装方法、装置及系统
CN113821264B (zh) 操作系统安装控制方法、安装控制系统及计算设备
CN111859403B (zh) 依赖关系漏洞的确定方法、装置、电子设备及存储介质
CN111125709B (zh) 一种服务器安全漏洞修复方法与装置
CN110046504B (zh) 基于Linker的SO文件隐藏方法、储存介质及装置
CN112491940A (zh) 代理服务器的请求转发方法及装置、存储介质及电子设备
US9141419B1 (en) Capturing and restoring an appliance image

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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: A program image construction method, system, computing device and readable storage medium

Effective date of registration: 20211105

Granted publication date: 20210604

Pledgee: Beijing Haidian Technology Enterprise Financing Guarantee Co., Ltd

Pledgor: Beijing Parallel Technology Co., Ltd

Registration number: Y2021990001073

PE01 Entry into force of the registration of the contract for pledge of patent right