本发明涉及云计算数据中心技术领域,特别是涉及一种在docker环境下部署加速器的方法、装置和计算机可读存储介质。
背景技术:
随着大数据、云计算、人工智能技术的兴起,人们对数据计算速度的要求越来越高,传统的中央处理器(centralprocessingunit,cpu)计算性能已经无法满足业务需求。基于这种考虑,提出了一种适用于服务器的异构加速平台,由cpu、现场可编辑门阵列(fieldprogrammablegatearray,fpga)和微控制单元(microcontrollerunit,mcu)组成。其基本原理是将一部分数据放到fpga中使用特定算法进行快速处理,然后将处理结果反馈给cpu,减轻cpu的压力,提高服务器工作效率。
虽然fpga加速器在数据加速方面优势明显,但是其部署过程却非常复杂。首先,我们需要在物理机上安装对应的驱动;其次,每次搭建环境都需设置板卡运行的环境变量;在板卡应用编译过程中可能会需求大量的依赖。以上因素严重制约了fpga加速器的应用场景落地。
容器技术是一种新型的虚拟化技术,它是操作系统中一组受到资源限制且彼此间相互隔离的独立进程。相比传统的虚拟机技术,容器技术具有资源利用率更高效、软件封装性更简单、软件迁移和扩展更方便的特点。docker是依托于linux内核的容器技术而发展起来的一种目前主流的容器引擎,它将底层系统、依赖环境、应用程序等进行统一打包,并形成一个整体的镜像文件,最后作为一个独立的容器部署在其他的平台或宿主机上。传统docker部署方案中都是将设备驱动安装在物理机上,只在docker中打包应用实例,但是这无法解决fpga加速器部署步骤繁琐的问题。
可见,如何降低加速器部署的难度,是本领域技术人员需要解决的问题。
技术实现要素:
本发明实施例的目的是提供一种在docker环境下部署加速器的方法、装置和计算机可读存储介质,可以降低加速器部署的难度。
为解决上述技术问题,本发明实施例提供一种在docker环境下部署加速器的方法,包括:
利用预先设定的docker部署脚本,构建dockerfile;其中,所述dockerfile中包含有部署加速器所需的环境设置脚本;
将宿主机上的驱动编译文件拷贝至与所述dockerfile相同的路径下;
运行所述dockerfile以生成docker容器,并将所述驱动编译文件拷贝至所述docker容器中;
调用所述环境设置脚本在所述docker容器中对所述驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。
可选地,所述运行所述dockerfile以生成docker容器包括:
利用dockerbuild指令执行所述dockerfile中包含的操作,以生成docker镜像;
利用dockerrun指令运行所述docker镜像以得到docker容器。
可选地,所述利用dockerbuild指令执行所述dockerfile中包含的操作,以生成docker镜像包括:
利用dockerbuild指令根据所述dockerfile记载的系统信息,拉取系统镜像;
依据所述dockerfile中包含的软件项目,在系统上安装与所述加速器相对应的软件包;并将所述dockerfile中包含的环境设置脚本拷贝到配置文件路径下,以生成docker镜像。
可选地,在所述调用所述环境设置脚本在所述docker容器中对所述驱动编译文件进行编译和安装之后还包括:
执行exit指令,以退出所述docker容器。
可选地,在所述将所述驱动编译文件拷贝至所述docker容器之后还包括:
根据获取的业务修改指令,修改所述docker容器中驱动编译文件包含的业务信息。
本发明实施例还提供了一种在docker环境下部署加速器的装置,包括构建单元、拷贝单元、生成单元和部署单元;
所述构建单元,用于利用预先设定的docker部署脚本,构建dockerfile;其中,所述dockerfile中包含有部署加速器所需的环境设置脚本;
所述拷贝单元,用于将宿主机上的驱动编译文件拷贝至与所述dockerfile相同的路径下;
所述生成单元,用于运行所述dockerfile以生成docker容器;
所述拷贝单元还用于将所述驱动编译文件拷贝至所述docker容器中;
所述部署单元,用于调用所述环境设置脚本在所述docker容器中对所述驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。
可选地,所述生成单元包括镜像生成子单元和容器生成子单元;
所述镜像生成子单元,用于利用dockerbuild指令执行所述dockerfile中包含的操作,以生成docker镜像;
所述容器生成子单元,用于容器生成子单元利用dockerrun指令运行所述docker镜像以得到docker容器。
可选地,所述镜像生成子单元用于利用dockerbuild指令根据所述dockerfile记载的系统信息,拉取系统镜像;依据所述dockerfile中包含的软件项目,在系统上安装与所述加速器相对应的软件包;并将所述dockerfile中包含的环境设置脚本拷贝到配置文件路径下,以生成docker镜像。
可选地,还包括退出单元;
所述退出单元,用于执行exit指令,以退出所述docker容器。
可选地,还包括修改单元;
所述修改单元,用于根据获取的业务修改指令,修改所述docker容器中驱动编译文件包含的业务信息。
本发明实施例还提供了一种在docker环境下部署加速器的装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述任意一项所述在docker环境下部署加速器的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述在docker环境下部署加速器的方法的步骤。
由上述技术方案可以看出,利用预先设定的docker部署脚本,构建dockerfile;其中,dockerfile中包含有部署加速器所需的环境设置脚本。将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下,在运行dockerfile生成docker容器之后,可以直接将驱动编译文件拷贝至docker容器中。环境设置脚本用于实现在docker环境下部署加速器时进行环境变量的设置。调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。在该技术方案中,通过调用脚本可以快速的在docker环境下完成加速器的部署,无需用户手动配置环境变量,编译、安装驱动,降低了加速器部署的难度,极大的提高了加速器的部署效率。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种在docker环境下部署加速器的方法的流程图;
图2为本发明实施例提供的一种在docker环境下部署加速器的装置的结构示意图;
图3为本发明实施例提供的一种在docker环境下部署加速器的装置的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。
接下来,详细介绍本发明实施例所提供的一种在docker环境下部署加速器的方法。图1为本发明实施例提供的一种在docker环境下部署加速器的方法的流程图,该方法包括:
s101:利用预先设定的docker部署脚本,构建dockerfile。
docker部署脚本用于将生成docker镜像所需执行的操作流程以dockerfile的形式呈现。其中,dockerfile中包含有部署加速器所需的环境设置脚本。
s102:将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下。
驱动编译文件是实现加速器在docker环境下进行编译、安装的源代码文件。
在本发明实施例中,需要将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下,以便在生成镜像时可以通过copy指令将文件拷贝到docker中,方便后续的驱动编译与安装。
s103:运行dockerfile以生成docker容器,并将驱动编译文件拷贝至docker容器中。
在生成docker容器的过程中,可以先根据dockerfile生成docker镜像,通过运行docker镜像,从而得到docker容器。
在具体实现中,可以利用dockerbuild指令执行dockerfile中包含的操作,以生成docker镜像;利用dockerrun指令运行docker镜像以得到docker容器。
dockerfile中包含有生成docker镜像所需执行的操作流程,包括拉取系统镜像、安装开发工具、安装软件、将环境设置脚本拷贝到配置文件路径下。
在实际应用中,可以利用dockerbuild指令根据dockerfile记载的系统信息,拉取系统镜像;依据dockerfile中包含的软件项目,在系统上安装与加速器相对应的软件包;并将dockerfile中包含的环境设置脚本拷贝到配置文件路径下,以生成docker镜像。
以fpga加速器为例,可以执行如下指令信息,以生成docker镜像:
(1)fromcentos7.5.1708:拉取系统镜像;
(2)runyumgroupinstall"developmenttools"–y:安装开发工具;
(3)runyuminstallcmakegccgcc-c++glibcmakeautoconfgtk2-develnumpypkconfigperl*sudovim–y:安装软件;
(4)addenv.sh/etc/profile.d/:将环境设置脚本拷贝到/etc/profile.d路径下。
在生成容器的过程中可通过—privileged=true指令将root权限开放到容器,通过—net=host指令将宿主机网络权限开放到容器。
s104:调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。
驱动编译文件可以包含加速器在业务层所能实现的应用。
环境设置脚本用于实现在docker环境下部署加速器时进行环境变量的设置。调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,可以实现加速器在docker环境下的部署。
在本发明实施例中,通过调整环境设置脚本以及驱动编译文件包含的具体内容,可以实现对服务器各种平台的兼容,极大的提高了加速器的部署效率。
由上述技术方案可以看出,利用预先设定的docker部署脚本,构建dockerfile;其中,dockerfile中包含有部署加速器所需的环境设置脚本。将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下,在运行dockerfile生成docker容器之后,可以直接将驱动编译文件拷贝至docker容器中。环境设置脚本用于实现在docker环境下部署加速器时进行环境变量的设置。调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。在该技术方案中,通过调用脚本可以快速的在docker环境下完成加速器的部署,无需用户手动配置环境变量,编译、安装驱动,降低了加速器部署的难度,极大的提高了加速器的部署效率。
在本发明实施例中,在调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装之后,可以执行exit指令,以退出docker容器。
再次进入docker容器时环境已搭好,因此用户可以根据自身的业务需求向docker容器输入业务修改指令,在该业务修改指令中可以携带所需修改的业务信息,docker容器根据获取的业务修改指令,修改驱动编译文件包含的业务信息,并在docker容器中重新进行编译和安装。
在本发明实施例中,通过调用脚本可一键完成加速器的自动化环境部署。由于已搭建好驱动编译环境,用户可根据自身需求修改驱动编译文件并在docker容器中重新进行编译和安装,实现了不同业务需求的快速部署。
图2为本发明实施例提供的一种在docker环境下部署加速器的装置的结构示意图,包括构建单元21、拷贝单元22、生成单元23和部署单元24;
构建单元21,用于利用预先设定的docker部署脚本,构建dockerfile;其中,dockerfile中包含有部署加速器所需的环境设置脚本;
拷贝单元22,用于将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下;
生成单元23,用于运行dockerfile以生成docker容器;
拷贝单元22还用于将驱动编译文件拷贝至docker容器中;
部署单元24,用于调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。
可选地,生成单元包括镜像生成子单元和容器生成子单元;
镜像生成子单元,用于利用dockerbuild指令执行dockerfile中包含的操作,以生成docker镜像;
容器生成子单元,用于容器生成子单元利用dockerrun指令运行docker镜像以得到docker容器。
可选地,镜像生成子单元用于利用dockerbuild指令根据dockerfile记载的系统信息,拉取系统镜像;依据dockerfile中包含的软件项目,在系统上安装与加速器相对应的软件包;并将dockerfile中包含的环境设置脚本拷贝到配置文件路径下,以生成docker镜像。
可选地,还包括退出单元;
退出单元,用于执行exit指令,以退出docker容器。
可选地,还包括修改单元;
修改单元,用于根据获取的业务修改指令,修改docker容器中驱动编译文件包含的业务信息。
图2所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,利用预先设定的docker部署脚本,构建dockerfile;其中,dockerfile中包含有部署加速器所需的环境设置脚本。将宿主机上的驱动编译文件拷贝至与dockerfile相同的路径下,在运行dockerfile生成docker容器之后,可以直接将驱动编译文件拷贝至docker容器中。环境设置脚本用于实现在docker环境下部署加速器时进行环境变量的设置。调用环境设置脚本在docker容器中对驱动编译文件进行编译和安装,以实现加速器在docker环境下的部署。在该技术方案中,通过调用脚本可以快速的在docker环境下完成加速器的部署,无需用户手动配置环境变量,编译、安装驱动,降低了加速器部署的难度,极大的提高了加速器的部署效率。
图3为本发明实施例提供的一种在docker环境下部署加速器的装置30的硬件结构示意图,包括:
存储器31,用于存储计算机程序;
处理器32,用于执行计算机程序以实现如上述任意实施例所述的在docker环境下部署加速器的方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述任意实施例所述的在docker环境下部署加速器的方法的步骤。
以上对本发明实施例所提供的一种在docker环境下部署加速器的方法、装置和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。