CN107643918A - 一种容器管理方法及装置 - Google Patents
一种容器管理方法及装置 Download PDFInfo
- Publication number
- CN107643918A CN107643918A CN201710846311.3A CN201710846311A CN107643918A CN 107643918 A CN107643918 A CN 107643918A CN 201710846311 A CN201710846311 A CN 201710846311A CN 107643918 A CN107643918 A CN 107643918A
- Authority
- CN
- China
- Prior art keywords
- file
- bag
- drivings
- driving
- container
- 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
Landscapes
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种容器管理方法及装置,上述方法包括以下步骤:容器启动后,获取设备信息、驱动文件目录的访问路径;根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。上述技术方案中,通过对驱动文件目录路径的获取、访问以及获取设备对应的驱动文件,使得容器自动挂载驱动软件,实现了外设驱动自动加载。
Description
技术领域
本发明涉及云计算技术领域,尤其涉及一种容器管理方法及装置。
背景技术
容器技术是比较常用的一种应用有效隔离方法,与虚拟机比起来更轻便且效率更高,使用容器可以简化部署应用的繁琐工作,但是在深度学习领域方面经常要使用高速网络来实现应用的高吞吐量,所以使用容器如何加载设备驱动是比较关键的技术问题。
通过容器安装设备驱动的通常做法是:先加载设备(设备符号),然后在容器中安装设备驱动。如图1所示的云计算架构中,包括硬件架构、操作系统OS、采用了线程隔离以及应用环境单独封装技术的Docker容器、上层应用APP;其中,在所述Docker容器中安装设备驱动即OS-IB驱动。
但是上述方案存在以下技术问题:安装设备驱动时,需要和宿主机内核进行匹配,且安装时依赖的库比较多且依赖关系复杂,一方面导致安装难度加大,另一方面需要在镜像中额外安装很多包,导致容器的镜像文件变得很大。
因此,迫切需要提供一种容器管理方案来解决上述技术问题。
发明内容
本发明提供一种容器管理方法及装置,以解决上述问题。
本发明实施例提供一种容器管理方法,包括以下步骤:容器启动后,获取设备信息、驱动文件目录的访问路径;
根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
本发明实施例还提供一种容器管理装置,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
容器启动后,获取设备信息、驱动文件目录的访问路径;
根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
本发明实施例提供的技术方案:容器启动后,获取设备信息、驱动文件目录的访问路径;根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
上述技术方案中,通过对驱动文件目录路径的获取、访问以及获取设备时应的驱动文件,使得容器自动挂载驱动软件,实现了外设驱动自动加载。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1所示为现有技术中的云计算架构示意图;
图2所示为本发明实施例2的容器管理方法流程图;
图3所示为本发明实施例应用的云计算架构示意图;
图4所示为本发明实施例4的容器管理方法流程图;
图5所示为本发明实施例5的容器管理方法流程图;
图6所示为本发明实施例6的容器管理装置结构图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本中请中的实施例及实施例中的特征可以相互组合。
本发明主要是采用是收集最近常用的外设卡驱动,通过把主要驱动链接库文件以及驱动命令文件实现自动收集,打包成一个专用的驱动文件,该驱动文件在容器启动时自动挂载进去,就可以实现外设驱动自动加载。
通过采用外挂载的方式实现IB驱动加载,优点是映射宿主机是设备,直接使用驱动库文件实现驱动的正常加载,同时兼容不同系统平台。
驱动提取方法:
根据IB的加载原理参考白皮书,里面介绍了驱动加载的原理,根据里面的要求进行IB驱动包信息的收集,目前收集的驱动包如下:
libibverbs-utils、libibverbs-devel、libibverbs-devel-static、libmlx4、libmlx5、ibutils libibcm、libibcommon、libibmad、libibumad、rdma、librdmacm-utils、librdmacm-devel、librdmacm、libibumad-devel、perftest。一共需要安装16个包。
现在只需要把每个包里面的库文件、头文件、可执行文件信息提取出来,提取的时候默认对库文件放到lib文件夹下,头文件默认放到include文件夹下,执行文件默认放到bin文件夹下,因为将来该文件都要默认在容器中加载,而驱动的加载原理是默认是根据设置的路径去找对应的文件夹下的库和头文件,上述提取完成后,然后在容器启动的时候把该文件加载到系统镜像中,就可以正常驱动IB卡。保证他的库文件可以正常软连接共享就可以,所有在容器中必须要配置LD_LIBRARY_PATH环境变量来实现。
图2所示为本发明实施例2的容器管理方法流程图,包括以下步骤:
步骤201:开始;
步骤202:挂载Centos7.3镜像文件;
步骤203:建立驱动文件目录infinibandlib;
步骤204:查找驱动信息rpm-api ibert;
步骤205:在宿主机上找到包的库文件路径地址;
步骤206:使用cp-d命令全部拷贝到infinibandlib目录下的lib文件夹下,其他的include文件和bin文件一样进行拷贝;
步骤207:启动容器挂载-device;
步骤208:挂载infinibandlib目录到usr/local/;
步骤209:执行ldconfigpath配置;
步骤210:执行ldconfig;
步骤211:结束。
通过上述技术方案可以获得驱动包里库文件的信息,然后在通过查找拷贝的技术方案进行文件的复制。该方法是需要在以配置好IB驱动的物理机中把上面的对应的lib64、include、bin的文件和链接全部拷贝,拷贝软连接用cp-d参数拷贝。拷贝的过程要把对应的lib放到对应的infinibandlib文件中的lib文件夹中,其他的也是类似的操作。
图3所示为本发明实施例应用的云计算架构示意图,如图3所示,包括硬件架构、操作系统OS、采用了线程隔离以及应用环境单独封装技术的Docker容器、上层应用APP;其中,所述Docker容器挂载在infinibandlib驱动文件目录。
该图中是把驱动目录在容器启动的时候作为一个挂载目录挂载到容器中,现在默认挂载到容器中的usr/local/目录下,加载容器的时候同时指定IB的设备,如-device=/dev/infiniband/ucm0和--device=/dev/infiniband/umad0。容器启动工作做好后,启动容器完成后,执行:export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/infinibandlib/lib64和export PATH=/usr/local/infinibandlib/bin:$PATH为了使环境变量生效,使用source/etc/profile可以使当前环境立马生效,为了让我们指定的库文件能够让容器加载的IB设备正常加载,需要我们告诉设备去那里加载驱动,所有需要执行ldconfig命令,建立共享库,这样IB驱动就能可以正常加载了。通过测试ib_write_bw命令可以正常使用,且通过另外一台物理机可以和该容器进行IB通信。
在实际生产环境中,我们前提是物理机之间的IB都已正常使用,而且是保证安装的硬件设备是Mellanox的IB卡,且装的驱动是官方提供的驱动,并且在每个物理机中已配置好docker容器,且容器可以正常使用。
图4所示为本发明实施例4的容器管理方法流程图,包括以下步骤:
步骤401:开始;
步骤402:建立驱动文件目录infinibandlib;
步骤403:启动容器挂载--device;
步骤404:挂载infinibandlib目录到usr/local/;
步骤405:执行ldconfigpath配置;
步骤406:执行ldconfig;
步骤407:结束。
根据该流程图,我们需要把提供的驱动包infinibandlib放到每个物理机的临时目录,如/opt/目录下,然后去查看设备号,因为每个设备号可能在物理机上是不一样的,所以到/dev/infiniband/目录下查看所有文件。容器启动把该设备全部加载进去,同时挂载infinibandlib目录到容器中的/usr/local/目录下。进入容器后执行动态链接库环境然后使用ldconfig产生共享库,此时容器就可以完全实现IB的驱动正常加载了。
图5所示为本发明实施例5的容器管理方法流程图,包括以下步骤:
步骤501:容器启动后,获取设备信息、驱动文件目录的访问路径;
进一步地,所述容器启动后,获取驱动文件目录的访问路径并将所述驱动文件目录的访问路径传输至所述容器的usr/local/目录下。
进一步地,所述容器启动后,获取设备信息、驱动文件目录的访问路径之前,还包括:
通过设备驱动包,获取与所述设备驱动包对应的库文件、头文件、可执行文件并将所述库文件、所述头文件、所述可执行文件存放至所述驱动文件目录下对应的文件夹。
优选地,所述设备驱动包包括:ibibverbs-utils驱动包、libibverbs-devel驱动包、libibverbs-devel-static驱动包、libmlx4驱动包、libmlx5驱动包、ibutils libibcm驱动包、libibcommon驱动包、libibmad驱动包、libibumad驱动包、rdma驱动包、librdmacm-utils驱动包、librdmacm-devel驱动包、librdmacm驱动包、libibumad-devel驱动包、perftest驱动包。
优选地,将所述库文件存放至lib文件夹、将所述头文件存放至include文件夹、将所述可执行文件存放至bin文件夹。
步骤502:根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
本发明实施例提供的容器挂载的驱动方法实现了IB驱动的正常加载,通过收集IB驱动技术方案,实现对应文件放不同目录的机制,且在容器中配置动态链接库功能实现IB加载驱动的技术方案。
图6所示为本发明实施例6的容器管理装置结构图,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
容器启动后,获取设备信息、驱动文件目录的访问路径;
根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
进一步地,所述容器启动后,获取驱动文件目录的访问路径并将所述驱动文件目录的访问路径传输至所述容器的usr/local/目录下。
进一步地,所述容器启动后,获取设备信息、驱动文件目录的访问路径之前,还包括:
通过设备驱动包,获取与所述设备驱动包对应的库文件、头文件、可执行文件并将所述库文件、所述头文件、所述可执行文件存放至所述驱动文件目录下对应的文件夹。
优选地,将所述库文件存放至lib文件夹、将所述头文件存放至include文件夹、将所述可执行文件存放至bin文件夹。
优选地,所述设备驱动包包括:ibibverbs-utils驱动包、libibverbs-devel驱动包、libibverbs-devel-static驱动包、libmlx4驱动包、libmlx5驱动包、ibutils libibcm驱动包、libibcommon驱动包、libibmad驱动包、libibumad驱动包、rdma驱动包、librdmacm-utils驱动包、librdmacm-devel驱动包、librdmacm驱动包、libibumad-devel驱动包、perftest驱动包。
通过该思路可以实现其他外设卡在容器中的加载方法,只要先理解外设卡在宿主机上是怎么加载的原理,一般可以通过外设卡官网进行查看白皮书来了解,知道加载原理,就会了解到那些关键文件是驱动设备的,我们通过提示查到对应的驱动包程序文件,一般会有好多个,然后对驱动包进行库文件信息查看,然后把对应的路径下的文件拷贝到指定目录下,把拷贝后的指定目录挂载到容器中后,指定动态链接库就可以正常实现。
本发明实施例提供的技术方案:容器启动后,获取设备信息、驱动文件目录的访问路径;根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
上述技术方案中,通过对驱动文件目录路径的获取、访问以及获取设备对应的驱动文件,使得容器自动挂载驱动软件,实现了外设驱动自动加载。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种容器管理方法,其特征在于,包括以下步骤:
容器启动后,获取设备信息、驱动文件目录的访问路径;
根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
2.根据权利要求1所述的容器管理方法,其特征在于,所述容器启动后,获取驱动文件目录的访问路径并将所述驱动文件目录的访问路径传输至所述容器的usr/local/目录下。
3.根据权利要求1或2所述的容器管理方法,其特征在于,所述容器启动后,获取设备信息、驱动文件目录的访问路径之前,还包括:
通过设备驱动包,获取与所述设备驱动包对应的库文件、头文件、可执行文件并将所述库文件、所述头文件、所述可执行文件存放至所述驱动文件目录下对应的文件夹。
4.根据权利要求3所述的容器管理方法,其特征在于,将所述库文件存放至lib文件夹、将所述头文件存放至include文件夹、将所述可执行文件存放至bin文件夹。
5.根据权利要求3所述的容器管理方法,其特征在于,所述设备驱动包包括:ibibverbs-utils驱动包、libibverbs-devel驱动包、libibverbs-devel-static驱动包、libmlx4驱动包、libmlx5驱动包、ibutils libibcm驱动包、libibcommon驱动包、libibmad驱动包、libibumad驱动包、rdma驱动包、librdmacm-utils驱动包、librdmacm-devel驱动包、librdmacm驱动包、libibumad-devel驱动包、perftest驱动包。
6.一种容器管理装置,其特征在于,包括处理器,适于实现各指令;存储设备,适于存储多条指令,所述指令适于由所述处理器加载并执行;
容器启动后,获取设备信息、驱动文件目录的访问路径;
根据所述驱动文件目录的访问路径,获得所述设备对应的驱动文件,其中,所述驱动文件包括库文件、头文件、可执行文件。
7.根据权利要求6所述的容器管理装置,其特征在于,所述容器启动后,获取驱动文件目录的访问路径并将所述驱动文件目录的访问路径传输至所述容器的usr/local/目录下。
8.根据权利要求6或7所述的容器管理装置,其特征在于,所述容器启动后,获取设备信息、驱动文件目录的访问路径之前,还包括:
通过设备驱动包,获取与所述设备驱动包对应的库文件、头文件、可执行文件并将所述库文件、所述头文件、所述可执行文件存放至所述驱动文件目录下对应的文件夹。
9.根据权利要求8所述的容器管理装置,其特征在于,将所述库文件存放至lib文件夹、将所述头文件存放至include文件夹、将所述可执行文件存放至bin文件夹。
10.根据权利要求8所述的容器管理装置,其特征在于,所述设备驱动包包括:ibibverbs-utils驱动包、libibverbs-devel驱动包、libibverbs-devel-static驱动包、libmlx4驱动包、libmlx5驱动包、ibutils libibcm驱动包、libibcommon驱动包、libibmad驱动包、libibumad驱动包、rdma驱动包、librdmacm-utils驱动包、librdmacm-devel驱动包、librdmacm驱动包、libibumad-devel驱动包、perftest驱动包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846311.3A CN107643918B (zh) | 2017-09-19 | 2017-09-19 | 一种容器管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710846311.3A CN107643918B (zh) | 2017-09-19 | 2017-09-19 | 一种容器管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107643918A true CN107643918A (zh) | 2018-01-30 |
CN107643918B CN107643918B (zh) | 2021-07-02 |
Family
ID=61111759
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710846311.3A Active CN107643918B (zh) | 2017-09-19 | 2017-09-19 | 一种容器管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107643918B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189401A (zh) * | 2018-07-06 | 2019-01-11 | 曙光信息产业(北京)有限公司 | 一种深度学习框架的部署方法以及系统 |
CN109947489A (zh) * | 2019-03-19 | 2019-06-28 | 佳都新太科技股份有限公司 | 基于容器的外接设备管理方法、装置、设备及存储介质 |
CN110389931A (zh) * | 2018-04-12 | 2019-10-29 | 北京京东尚科信息技术有限公司 | 一种基于容器发布头尾文件的方法和装置 |
CN116560801A (zh) * | 2023-06-29 | 2023-08-08 | 中电长城(长沙)信息技术有限公司 | 一种跨容器的柜面系统信创迁移方法及设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215754A1 (en) * | 2003-03-31 | 2004-10-28 | Microsoft Corporation | Peripheral device driver maintenance scheme for networked peripheral device clients |
CN102346737A (zh) * | 2010-07-30 | 2012-02-08 | 腾讯科技(深圳)有限公司 | 一种硬件设备驱动程序的共享方法和装置 |
CN103825953A (zh) * | 2014-03-04 | 2014-05-28 | 武汉理工大学 | 一种用户模式加密文件系统 |
CN105045616A (zh) * | 2015-07-03 | 2015-11-11 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105389186A (zh) * | 2015-11-20 | 2016-03-09 | 福建亿榕信息技术有限公司 | 一种Java应用的热部署方法及系统 |
CN105718302A (zh) * | 2016-01-18 | 2016-06-29 | 浪潮集团有限公司 | 一种基于Docker实现冗余交换机操作系统的方法 |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
-
2017
- 2017-09-19 CN CN201710846311.3A patent/CN107643918B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215754A1 (en) * | 2003-03-31 | 2004-10-28 | Microsoft Corporation | Peripheral device driver maintenance scheme for networked peripheral device clients |
CN102346737A (zh) * | 2010-07-30 | 2012-02-08 | 腾讯科技(深圳)有限公司 | 一种硬件设备驱动程序的共享方法和装置 |
CN103825953A (zh) * | 2014-03-04 | 2014-05-28 | 武汉理工大学 | 一种用户模式加密文件系统 |
CN105045616A (zh) * | 2015-07-03 | 2015-11-11 | 浪潮软件集团有限公司 | 一种调用驱动的方法及装置 |
CN105389186A (zh) * | 2015-11-20 | 2016-03-09 | 福建亿榕信息技术有限公司 | 一种Java应用的热部署方法及系统 |
CN105718302A (zh) * | 2016-01-18 | 2016-06-29 | 浪潮集团有限公司 | 一种基于Docker实现冗余交换机操作系统的方法 |
CN106227579A (zh) * | 2016-07-12 | 2016-12-14 | 深圳市中润四方信息技术有限公司 | 一种Docker容器构建方法及Docker管理控制台 |
CN106970822A (zh) * | 2017-02-20 | 2017-07-21 | 阿里巴巴集团控股有限公司 | 一种容器创建方法及装置 |
Non-Patent Citations (2)
Title |
---|
HUI KANG.ETC: ""Container and Microservice Driven Design for Cloud Infrastructure DevOps"", 《2016 IEEE INTERNATIONAL CONFERENCE ON CLOUD ENGINEERING (IC2E)》 * |
叶翼安: ""一种基于Docker构件化集成交付的软件仓库模式设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110389931A (zh) * | 2018-04-12 | 2019-10-29 | 北京京东尚科信息技术有限公司 | 一种基于容器发布头尾文件的方法和装置 |
CN109189401A (zh) * | 2018-07-06 | 2019-01-11 | 曙光信息产业(北京)有限公司 | 一种深度学习框架的部署方法以及系统 |
CN109947489A (zh) * | 2019-03-19 | 2019-06-28 | 佳都新太科技股份有限公司 | 基于容器的外接设备管理方法、装置、设备及存储介质 |
CN116560801A (zh) * | 2023-06-29 | 2023-08-08 | 中电长城(长沙)信息技术有限公司 | 一种跨容器的柜面系统信创迁移方法及设备 |
CN116560801B (zh) * | 2023-06-29 | 2023-09-22 | 中电长城(长沙)信息技术有限公司 | 一种跨容器的柜面系统信创迁移方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107643918B (zh) | 2021-07-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107643918A (zh) | 一种容器管理方法及装置 | |
EP3324291B1 (en) | Method and device for operating docker container | |
CN108958927B (zh) | 容器应用的部署方法、装置、计算机设备和存储介质 | |
US9965358B2 (en) | Seamless application backup and recovery using metadata | |
US8392906B2 (en) | Enabling parallel websphere runtime versions | |
US12086573B2 (en) | Automatic containerization of operating system distributions | |
CN105144093B (zh) | 使用基础设施管理代理供应的工作负荷部署 | |
US11403146B2 (en) | Method, apparatus, and server for managing image across cloud servers | |
CN107479922A (zh) | 一种闪存数据管理方法、装置及计算机可读存储介质 | |
CN109906433A (zh) | 针对容器的存储隔离 | |
FR2790323A1 (fr) | Procede et dispositif d'impression de documents electroniques avec feuilles de separation intercalees automatiquement | |
CN101025685A (zh) | 容器层级中的多层单元的增强可视化和选择的方法和系统 | |
CN108984268A (zh) | Docker系统中容器管理的方法和装置 | |
CN109408064A (zh) | 一种编排可视化的微服务系统自动化部署方法与系统 | |
CN103984903B (zh) | 装置和信息记录方法 | |
US20130227085A1 (en) | Terminal and method for using cloud services | |
CN107870769A (zh) | 操作系统的安装方法及装置 | |
CN103064637A (zh) | 一种网盘的缓存同步方法及系统 | |
CN103309751B (zh) | 提供文件系统功能的终端的设备和方法 | |
US20170068587A1 (en) | Data dump for a memory in a data processing system | |
CN107590033A (zh) | 一种创建docker容器的方法、装置和系统 | |
CN101938469A (zh) | 一种运行时Android库文件的透明加载方法及系统 | |
CN108829430A (zh) | 基于Eclipse和Tomcat的Java Web项目更新方法及相关装置 | |
CN106250125A (zh) | 获取日志的方法及装置 | |
CN109309612A (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 |