国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種容器創(chuàng)建方法和裝置與流程

      文檔序號(hào):11199045閱讀:1363來(lái)源:國(guó)知局
      一種容器創(chuàng)建方法和裝置與流程

      本公開(kāi)涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及一種容器創(chuàng)建方法和裝置。



      背景技術(shù):

      容器技術(shù)是一種操作系統(tǒng)層虛擬化技術(shù),可以將應(yīng)用軟件系統(tǒng)打包成一個(gè)軟件容器,內(nèi)含應(yīng)用本身的代碼及其所需要的操作系統(tǒng)核心和庫(kù),通過(guò)命名空間技術(shù)和硬件資源隔離技術(shù)創(chuàng)造出應(yīng)用獨(dú)立的沙箱運(yùn)行環(huán)境。目前,隨著人工智能和圖像處理業(yè)務(wù)的發(fā)展和需求擴(kuò)大,容器技術(shù)也逐步應(yīng)用于企業(yè)高性能計(jì)算領(lǐng)域方面的工作。例如,在高性能計(jì)算領(lǐng)域,容器中運(yùn)行的應(yīng)用有時(shí)需要使用某個(gè)物理設(shè)備,那么為了使得能夠使用該物理設(shè)備,創(chuàng)建的容器中需要包括該物理設(shè)備的信息,比如,可以是設(shè)備的驅(qū)動(dòng),否則容器就無(wú)法使用該設(shè)備。

      現(xiàn)有技術(shù)的其中一種方式,可以將設(shè)備的驅(qū)動(dòng)直接安裝在容器中,每個(gè)容器中都要安裝該驅(qū)動(dòng),但是這種方式在驅(qū)動(dòng)版本升級(jí)時(shí),所有的容器和鏡像都要更新,而且還需要獲取更新時(shí)所需要的設(shè)備信息,操作非常繁瑣,而且還會(huì)對(duì)容器中的業(yè)務(wù)運(yùn)行造成影響。



      技術(shù)實(shí)現(xiàn)要素:

      有鑒于此,本公開(kāi)提供一種容器創(chuàng)建方法和裝置,以使得容器對(duì)設(shè)備的使用實(shí)現(xiàn)更加靈活和方便,并減小設(shè)備更新對(duì)容器業(yè)務(wù)的影響。

      具體地,本公開(kāi)是通過(guò)如下技術(shù)方案實(shí)現(xiàn)的:

      第一方面,提供一種容器創(chuàng)建方法,所述方法應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,所述方法包括:

      接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;

      根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎,以使得所述容器引擎創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      第二方面,提供一種容器創(chuàng)建方法,所述方法應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,所述方法包括:

      向容器插件發(fā)送插件觸發(fā)請(qǐng)求,所述插件觸發(fā)請(qǐng)求用于觸發(fā)所述容器插件獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      接收所述容器插件返回的所述設(shè)備信息和驅(qū)動(dòng);

      使用所述設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      第三方面,提供一種容器創(chuàng)建裝置,所述裝置應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,所述裝置包括:

      觸發(fā)接收模塊,用于接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;

      信息獲取模塊,用于根據(jù)所述觸發(fā)請(qǐng)求,獲取目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      信息反饋模塊,用于將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎,以使得所述容器引擎創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      第四方面,提供一種容器創(chuàng)建裝置,所述裝置應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,所述裝置包括:

      請(qǐng)求發(fā)送模塊,用于向容器插件發(fā)送插件觸發(fā)請(qǐng)求,所述插件觸發(fā)請(qǐng)求用于觸發(fā)所述容器插件獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      信息接收模塊,用于接收所述容器插件返回的所述設(shè)備信息和驅(qū)動(dòng);

      容器創(chuàng)建模塊,用于使用所述設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶目標(biāo)設(shè)備的容器。

      第五方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,該指令被處理器執(zhí)行時(shí)實(shí)現(xiàn)以下步驟:

      接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;

      根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎,以使得所述容器引擎創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      第六方面,提供一種處理設(shè)備,所述處理設(shè)備中安裝有目標(biāo)設(shè)備,所述處理設(shè)備包括存儲(chǔ)器、處理器,以及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)指令,所述計(jì)算機(jī)指令包括:用于實(shí)現(xiàn)容器插件的插件指令、以及用于實(shí)現(xiàn)容器引擎的引擎指令;

      所述處理器通過(guò)執(zhí)行所述插件指令,用于實(shí)現(xiàn)如下步驟:接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎;

      所述處理器通過(guò)執(zhí)行所述引擎指令,用于實(shí)現(xiàn)如下步驟:向容器插件發(fā)送插件觸發(fā)請(qǐng)求,所述插件觸發(fā)請(qǐng)求用于觸發(fā)所述容器插件獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);接收所述容器插件返回的設(shè)備信息和驅(qū)動(dòng);使用所述設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      本公開(kāi)的容器創(chuàng)建方法和裝置,當(dāng)容器引擎創(chuàng)建容器時(shí),可以自動(dòng)觸發(fā)本公開(kāi)的容器插件代為收集目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng),這樣使得對(duì)于容器創(chuàng)建時(shí)所需信息的獲取更為快速和方便,并且,插件化的方式對(duì)容器中的業(yè)務(wù)不會(huì)產(chǎn)生影響。

      附圖說(shuō)明

      圖1是本公開(kāi)實(shí)施例提供的一個(gè)容器的應(yīng)用場(chǎng)景;

      圖2是本公開(kāi)實(shí)施例提供的一個(gè)容器創(chuàng)建流程圖;

      圖3是本公開(kāi)實(shí)施例提供的一個(gè)容器插件的結(jié)構(gòu)示意圖;

      圖4是本公開(kāi)實(shí)施例提供的容器插件第一階段的工作流程圖;

      圖5是本公開(kāi)實(shí)施例提供的容器插件第二階段的工作流程圖;

      圖6是本公開(kāi)實(shí)施例提供的容器插件第三階段的工作流程圖;

      圖7是本公開(kāi)實(shí)施例提供的驅(qū)動(dòng)設(shè)備查詢器的結(jié)構(gòu)示意圖;

      圖8是本公開(kāi)實(shí)施例提供的一種容器創(chuàng)建裝置的結(jié)構(gòu)示意圖;

      圖9是本公開(kāi)實(shí)施例提供的一種容器創(chuàng)建裝置的結(jié)構(gòu)示意圖;

      圖10是本公開(kāi)實(shí)施例提供的一種容器創(chuàng)建裝置的結(jié)構(gòu)示意圖。

      具體實(shí)施方式

      利用容器(container)技術(shù)可以為應(yīng)用程序創(chuàng)造出一個(gè)獨(dú)立的沙箱運(yùn)行環(huán)境,并不是像虛擬機(jī)那樣提供一套完整的操作系統(tǒng),例如,傳統(tǒng)虛擬機(jī)方式運(yùn)行十個(gè)不同的應(yīng)用就要起十個(gè)虛擬機(jī),而容器技術(shù)只需要啟動(dòng)十個(gè)隔離的應(yīng)用即可,這十個(gè)應(yīng)用分別位于不同的容器中。容器的啟動(dòng)和運(yùn)行效率較高,而且對(duì)系統(tǒng)資源的利用率很高,容器除了運(yùn)行其中的應(yīng)用程序外,基本不消耗額外的系統(tǒng)資源,一臺(tái)主機(jī)上可以同時(shí)運(yùn)行數(shù)量很多的容器。正因?yàn)樯鲜鰞?yōu)點(diǎn),容器技術(shù)逐步應(yīng)用于各個(gè)方面的工作。

      圖1示例了一個(gè)容器的應(yīng)用場(chǎng)景,如圖1所示,處理設(shè)備11例如可以是一個(gè)電腦、服務(wù)器等物理機(jī)器,或者也可以是一個(gè)運(yùn)行在物理機(jī)器上的虛擬機(jī),如下的描述中以物理機(jī)器為例。在處理設(shè)備11中可以安裝有至少一個(gè)硬件設(shè)備,在一個(gè)例子中,這些硬件設(shè)備可以是infiniband設(shè)備,infiniband是一種適用于高性能計(jì)算領(lǐng)域的計(jì)算機(jī)網(wǎng)絡(luò)通信標(biāo)準(zhǔn),具有高吞吐、低延遲的傳輸特性,infiniband設(shè)備可以包括infiniband交換機(jī)和網(wǎng)絡(luò)互聯(lián)設(shè)備等。使用infiniband設(shè)備需要攜帶該設(shè)備的驅(qū)動(dòng),如圖1所示,處理設(shè)備11中包括物理機(jī)infiniband設(shè)備12(即安裝在物理機(jī)器形式的處理設(shè)備上的infiniband,以區(qū)分后續(xù)描述中出現(xiàn)的容器infiniband)和物理機(jī)infiniband驅(qū)動(dòng)13(同理,以區(qū)分后續(xù)出現(xiàn)的容器驅(qū)動(dòng))。本例子中,可以將上述的infiniband設(shè)備稱為目標(biāo)設(shè)備,此外,如下描述中以infiniband設(shè)備為例,但在其他的應(yīng)用場(chǎng)景中也可以是其他硬件設(shè)備。

      請(qǐng)繼續(xù)參見(jiàn)圖1,假設(shè)在該處理設(shè)備上創(chuàng)建并運(yùn)行一個(gè)容器14,該容器14中的應(yīng)用程序需要使用infiniband設(shè)備,以提高網(wǎng)絡(luò)吞吐量和網(wǎng)絡(luò)通信效率,那么容器14可以是一個(gè)“攜帶infiniband設(shè)備的容器(圖1示意為infiniband容器)”,即需要將infiniband設(shè)備掛載在容器14中,容器14還需要包括該infiniband設(shè)備的驅(qū)動(dòng),這樣才能夠正常使用infiniband設(shè)備。如圖1所示,容器14中包括容器infiniband設(shè)備和驅(qū)動(dòng),以通過(guò)這些共享實(shí)際的物理設(shè)備。

      本公開(kāi)的容器創(chuàng)建方法,即用于描述如何創(chuàng)建上述的容器14,并且使得該容器14中攜帶處理設(shè)備11中的infiniband設(shè)備及其驅(qū)動(dòng)。如圖1所示,可以由容器引擎15負(fù)責(zé)創(chuàng)建容器,在一個(gè)例子中,例如,該容器引擎15可以是docker,docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的linux機(jī)器上,以期實(shí)現(xiàn)構(gòu)建一次,到處運(yùn)行,即“buildonce,runanywhere”,docker可以使得應(yīng)用程序部署在軟件容器下的工作自動(dòng)化進(jìn)行。當(dāng)然,在其他的應(yīng)用例子中,也可以使用其他的容器引擎,不限制于docker,本公開(kāi)的后續(xù)例子中以docker為例進(jìn)行描述。

      以docker為例,docker可以提供一種擴(kuò)展機(jī)制即docker插件,例如,docker可以支持volume插件。插件是一個(gè)獨(dú)立的進(jìn)程,docker插件可以與docker運(yùn)行在同一臺(tái)主機(jī)上,由docker進(jìn)程進(jìn)行插件觸發(fā)。本公開(kāi)提供了一種插件,如圖1所示的容器插件16,由該容器插件16負(fù)責(zé)為容器的創(chuàng)建收集所需的infiniband設(shè)備信息和驅(qū)動(dòng),并返回給容器引擎15,以供容器引擎15創(chuàng)建容器。

      圖2示例了本公開(kāi)的容器創(chuàng)建流程,可以包括:

      在步驟201中,容器引擎接收容器創(chuàng)建請(qǐng)求,所述容器創(chuàng)建請(qǐng)求用于請(qǐng)求創(chuàng)建攜帶目標(biāo)設(shè)備的容器。

      例如,如圖1所示,用戶調(diào)度程序可以向docker發(fā)送容器創(chuàng)建請(qǐng)求,調(diào)度docker進(jìn)程創(chuàng)建一個(gè)攜帶infiniband設(shè)備的容器。

      在步驟202中,容器引擎向容器插件發(fā)送插件觸發(fā)請(qǐng)求。

      例如,docker進(jìn)程接收到容器創(chuàng)建請(qǐng)求后,開(kāi)始進(jìn)入創(chuàng)建容器的流程。本步驟中,可以通過(guò)docker進(jìn)程的volumedriver觸發(fā)本公開(kāi)中的容器插件開(kāi)始工作,相當(dāng)于向容器插件發(fā)送插件觸發(fā)請(qǐng)求。

      在步驟203中,容器插件根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng)。

      例如,圖1中的容器插件16在偵聽(tīng)到docker進(jìn)程創(chuàng)建volume事件的觸發(fā)后,可以判斷觸發(fā)參數(shù)是否正確,比如可以是,觸發(fā)請(qǐng)求中攜帶的參數(shù)格式是否正確。若不符合要求則可以向docker返回創(chuàng)建volume事件失敗,否則,可以繼續(xù)獲取infiniband設(shè)備的設(shè)備信息和驅(qū)動(dòng),本例子中可以是獲取圖1中的物理機(jī)infiniband設(shè)備的設(shè)備信息以及物理機(jī)infiniband驅(qū)動(dòng)。

      在步驟204中,容器插件將設(shè)備信息和驅(qū)動(dòng)返回給容器引擎。

      本步驟中,圖1中的容器插件16可以將獲取到的infiniband設(shè)備的設(shè)備信息和驅(qū)動(dòng)返回給docker。

      在步驟205中,容器引擎使用所述設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。例如,docker可以根據(jù)設(shè)備信息和驅(qū)動(dòng),進(jìn)行infiniband設(shè)備的設(shè)備掛載和目錄掛載。

      本例子的容器創(chuàng)建方法是一種將設(shè)備信息和驅(qū)動(dòng)的獲取設(shè)計(jì)為插件化的方法,插件化是一種靈活輕量的工作模式,具有插拔特性,通常插拔過(guò)程對(duì)主流程不構(gòu)成影響。本例子中,當(dāng)容器引擎創(chuàng)建容器時(shí),可以自動(dòng)觸發(fā)本公開(kāi)的容器插件代為收集目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng),這樣使得對(duì)于容器創(chuàng)建時(shí)所需信息的獲取更為快速和方便,并且,插件化的方式對(duì)容器中的業(yè)務(wù)不會(huì)產(chǎn)生影響。

      此外,假設(shè)docker創(chuàng)建多個(gè)容器時(shí),現(xiàn)有技術(shù)中可以將驅(qū)動(dòng)直接安裝在各個(gè)容器中,當(dāng)驅(qū)動(dòng)版本更新時(shí)導(dǎo)致每個(gè)容器和鏡像都要隨之更新,而本例子的方法中,是由容器插件將驅(qū)動(dòng)返回給創(chuàng)建容器的docker引擎,相當(dāng)于多個(gè)容器共享一份驅(qū)動(dòng)即可,docker在創(chuàng)建新容器時(shí)自動(dòng)獲取插件返回的新版本驅(qū)動(dòng)使用即可,非常方便。而且,容器插件可以將設(shè)備最新的驅(qū)動(dòng)和設(shè)備信息返回至docker,可以使得docker兼容適配各個(gè)設(shè)備版本,由容器插件負(fù)責(zé)收集目標(biāo)設(shè)備的驅(qū)動(dòng)和設(shè)備信息,大大簡(jiǎn)化了攜帶設(shè)備的容器的創(chuàng)建流程,使得容器對(duì)設(shè)備的使用實(shí)現(xiàn)更加靈活和方便。

      在一個(gè)例子中,將進(jìn)一步詳細(xì)描述圖1中的容器插件的結(jié)構(gòu)和工作過(guò)程。

      如圖3所示,例如,本公開(kāi)的容器插件可以包括三個(gè)模塊,分別為:插件擴(kuò)展觸發(fā)模塊31、驅(qū)動(dòng)和設(shè)備選擇模塊32、以及驅(qū)動(dòng)和設(shè)備收集模塊33。例如,插件擴(kuò)展觸發(fā)模塊31可以是dockervolume插件擴(kuò)展觸發(fā)模塊。容器插件的工作過(guò)程可以由上述的三個(gè)模塊配合執(zhí)行,包括如下的三個(gè)階段:

      第一階段:插件擴(kuò)展觸發(fā)模塊的流程。

      如圖4的示例,在步驟401中,插件擴(kuò)展觸發(fā)模塊接收到插件觸發(fā)。

      本步驟中,插件擴(kuò)展觸發(fā)模塊可以偵聽(tīng)是否要?jiǎng)?chuàng)建volume事件。當(dāng)docker接收到容器創(chuàng)建請(qǐng)求時(shí),可以觸發(fā)插件擴(kuò)展觸發(fā)模塊創(chuàng)建volume事件。本例子中,插件擴(kuò)展觸發(fā)模塊在接收到docker發(fā)送的創(chuàng)建volume事件的插件觸發(fā)請(qǐng)求后,可以繼續(xù)執(zhí)行402,否則,可以繼續(xù)偵聽(tīng)。

      在步驟402中,插件擴(kuò)展觸發(fā)模塊判斷觸發(fā)參數(shù)是否正確。

      若觸發(fā)參數(shù)正確,則可以在步驟403中觸發(fā)驅(qū)動(dòng)和設(shè)備選擇模塊執(zhí)行下一階段的流程;否則,可以在步驟404中向docker返回創(chuàng)建volume事件失敗。

      由圖4的流程可以看到,本例子的容器插件中的插件擴(kuò)展觸發(fā)模塊,可以主要負(fù)責(zé)判斷是否接收到docker的插件觸發(fā),是否要?jiǎng)?chuàng)建volume事件,即負(fù)責(zé)確定本容器插件是否要開(kāi)始獲取設(shè)備信息和驅(qū)動(dòng)的流程。

      第二階段:驅(qū)動(dòng)和設(shè)備選擇模塊的流程。

      如圖5的示例,在步驟501中,驅(qū)動(dòng)和設(shè)備選擇模塊接收觸發(fā)請(qǐng)求。

      本步驟中,驅(qū)動(dòng)和設(shè)備選擇模塊接收到插件擴(kuò)展觸發(fā)模塊的觸發(fā)。

      在步驟502中,驅(qū)動(dòng)和設(shè)備選擇模塊判斷用戶是否傳入了指定的驅(qū)動(dòng)版本。

      例如,用戶可以在調(diào)度docker創(chuàng)建容器時(shí),在容器創(chuàng)建請(qǐng)求中就指定驅(qū)動(dòng)版本,那么docker也會(huì)在向插件擴(kuò)展觸發(fā)模塊發(fā)送插件觸發(fā)請(qǐng)求時(shí),攜帶上所述指定的驅(qū)動(dòng)版本,同樣,插件擴(kuò)展觸發(fā)模塊在觸發(fā)驅(qū)動(dòng)和設(shè)備選擇模塊時(shí),可以將用戶指定的驅(qū)動(dòng)版本傳給驅(qū)動(dòng)和設(shè)備選擇模塊。

      本步驟中,若判斷結(jié)果為否,即用戶沒(méi)有傳入驅(qū)動(dòng)版本,則可以直接執(zhí)行步驟505,觸發(fā)驅(qū)動(dòng)和設(shè)備收集模塊33進(jìn)行驅(qū)動(dòng)收集,當(dāng)然,該驅(qū)動(dòng)和設(shè)備收集模塊33也會(huì)收集設(shè)備信息。如果判斷結(jié)果為是,即用戶傳入了指定的驅(qū)動(dòng)版本,則可以執(zhí)行步驟503。

      在步驟503中,驅(qū)動(dòng)和設(shè)備選擇模塊調(diào)用驅(qū)動(dòng)和設(shè)備收集模塊查詢驅(qū)動(dòng)。

      在步驟504中,判斷指定版本的驅(qū)動(dòng)是否存在。

      本步驟中,可以是向驅(qū)動(dòng)和設(shè)備收集模塊查詢是否存在所述指定的驅(qū)動(dòng)版本,如不存在,可以執(zhí)行步驟506,否則,可以執(zhí)行步驟505。

      在步驟505中,驅(qū)動(dòng)和設(shè)備選擇模塊觸發(fā)驅(qū)動(dòng)和設(shè)備收集模塊,以進(jìn)入下一階段的流程,進(jìn)行設(shè)備信息和驅(qū)動(dòng)的收集。

      在步驟506中,驅(qū)動(dòng)和設(shè)備選擇模塊返回創(chuàng)建失敗,即驅(qū)動(dòng)和設(shè)備選擇模塊向插件擴(kuò)展觸發(fā)模塊返回失敗,繼而插件擴(kuò)展觸發(fā)模塊向docker返回失敗。

      由圖5的流程可以看到,本例子的容器插件中的驅(qū)動(dòng)和設(shè)備選擇模塊,可以主要負(fù)責(zé)判斷是否要繼續(xù)觸發(fā)設(shè)備信息和驅(qū)動(dòng)的收集獲取,如果指定版本的驅(qū)動(dòng)并不存在,則不用繼續(xù)收集,直接向docker返回失敗即可,如果指定驅(qū)動(dòng)存在或者未指定驅(qū)動(dòng),則可以觸發(fā)設(shè)備信息和驅(qū)動(dòng)的收集。

      第三階段:驅(qū)動(dòng)和設(shè)備收集模塊的流程。

      如圖6的示例,在步驟601中,驅(qū)動(dòng)和設(shè)備收集模塊接收觸發(fā)請(qǐng)求。

      本步驟中,驅(qū)動(dòng)和設(shè)備收集模塊接收到驅(qū)動(dòng)和設(shè)備選擇模塊的觸發(fā)。

      在步驟602中,驅(qū)動(dòng)和設(shè)備收集模塊判斷是否帶有指定的驅(qū)動(dòng)版本。

      如果判斷結(jié)果為否,即不帶驅(qū)動(dòng)版本,用戶未指定,則可以執(zhí)行步驟604;否則,若判斷結(jié)果為是,則可以執(zhí)行步驟603。

      在步驟603中,驅(qū)動(dòng)和設(shè)備收集模塊判斷指定版本的驅(qū)動(dòng)在緩存中是否存在。若存在,則執(zhí)行步驟604;否則,可以執(zhí)行步驟605。

      在步驟604中,驅(qū)動(dòng)和設(shè)備收集模塊由緩存中獲取最新的所述設(shè)備信息和驅(qū)動(dòng)。本步驟中,獲取設(shè)備信息和驅(qū)動(dòng)后,驅(qū)動(dòng)和設(shè)備收集模塊可以將設(shè)備信息和驅(qū)動(dòng)返回給驅(qū)動(dòng)和設(shè)備選擇模塊,驅(qū)動(dòng)和設(shè)備選擇模塊將設(shè)備信息和驅(qū)動(dòng)返回給插件擴(kuò)展觸發(fā)模塊,最終由插件擴(kuò)展觸發(fā)模塊返回給docker進(jìn)行攜帶infiniband設(shè)備的容器的創(chuàng)建。

      在步驟605中,驅(qū)動(dòng)和設(shè)備收集模塊判斷是否首次收集該版本驅(qū)動(dòng)。

      若非首次收集,則說(shuō)明該驅(qū)動(dòng)不存在,可以直接執(zhí)行步驟608;若是首次收集,則可以執(zhí)行步驟606。

      在步驟606中,驅(qū)動(dòng)和設(shè)備收集模塊調(diào)用驅(qū)動(dòng)設(shè)備查詢器收集設(shè)備信息和驅(qū)動(dòng)。該驅(qū)動(dòng)設(shè)備查詢器的結(jié)構(gòu)和工作原理,后續(xù)例子描述。

      在步驟607中,驅(qū)動(dòng)和設(shè)備收集模塊在接收到驅(qū)動(dòng)設(shè)備查詢器返回的設(shè)備信息和驅(qū)動(dòng)后,更新緩存中的驅(qū)動(dòng)和設(shè)備信息。

      本步驟中更新緩存后,驅(qū)動(dòng)和設(shè)備收集模塊可以返回步驟603,再次判斷指定版本驅(qū)動(dòng)是否在緩存中,若還是不存在,則依據(jù)上述流程描述,將返回失敗,當(dāng)然還可以是依次經(jīng)由上述的驅(qū)動(dòng)和設(shè)備選擇模塊、插件擴(kuò)展觸發(fā)模塊,最終返回失敗給docker;若再次判斷時(shí)已經(jīng)存在,則依據(jù)上述流程描述,則將設(shè)備信息和驅(qū)動(dòng)返回給docker即可。

      在步驟608中,驅(qū)動(dòng)和設(shè)備收集模塊返回創(chuàng)建失敗。

      由圖6的流程可以看到,本例子的容器插件中的驅(qū)動(dòng)和設(shè)備收集模塊,可以主要負(fù)責(zé)具體的設(shè)備信息和驅(qū)動(dòng)的收集獲取,而且可以是優(yōu)先由緩存中獲取,緩存中沒(méi)有時(shí)可以調(diào)用驅(qū)動(dòng)設(shè)備查詢器獲取。

      在一個(gè)例子中,上述提到的驅(qū)動(dòng)設(shè)備查詢器,可以作為驅(qū)動(dòng)和設(shè)備收集模塊的一部分,主要負(fù)責(zé)獲取容器插件所在的處理設(shè)備上的目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng)。圖7示例了該驅(qū)動(dòng)設(shè)備查詢器的結(jié)構(gòu),如圖7所示,可以包括:版本維護(hù)器71、驅(qū)動(dòng)信息管理器72、設(shè)備信息管理器73和物理設(shè)備調(diào)用器74。

      例如,版本維護(hù)器71中可以維護(hù)有不同版本的infiniband設(shè)備的設(shè)備信息和驅(qū)動(dòng)。并且,該版本維護(hù)器71中還可以維護(hù)不同版本的infiniband設(shè)備對(duì)應(yīng)的驅(qū)動(dòng)信息映射鍵和設(shè)備信息映射鍵,通過(guò)映射鍵可以查詢驅(qū)動(dòng)信息管理器72、設(shè)備信息管理器73,在驅(qū)動(dòng)信息管理器72中存儲(chǔ)有驅(qū)動(dòng)的描述和獲取方式,設(shè)備信息管理器73存儲(chǔ)有設(shè)備信息的描述和獲取方式。

      當(dāng)驅(qū)動(dòng)設(shè)備查詢器接收到調(diào)用請(qǐng)求后,可以先查詢請(qǐng)求獲取的驅(qū)動(dòng)和設(shè)備信息是否存儲(chǔ)在版本維護(hù)器71中。如果存在,則可以直接返回給驅(qū)動(dòng)和設(shè)備收集模塊;如果不存在,可以通過(guò)該版本的映射鍵,查詢驅(qū)動(dòng)信息管理器72和設(shè)備信息管理器73,得到設(shè)備信息和驅(qū)動(dòng)的獲取方式。接著,可以通過(guò)物理設(shè)備調(diào)用器74(例如,infiniband物理設(shè)備調(diào)用器)根據(jù)所述的獲取方式,獲得具體的設(shè)備信息和驅(qū)動(dòng)。并且,還可以將獲取到的設(shè)備信息和驅(qū)動(dòng)存儲(chǔ)至所述版本維護(hù)器71中,下次就可以直接由版本維護(hù)器71中獲取。

      本例子中,驅(qū)動(dòng)和設(shè)備收集模塊中可以自動(dòng)運(yùn)行一個(gè)定時(shí)器,定時(shí)調(diào)用驅(qū)動(dòng)設(shè)備查詢器來(lái)進(jìn)行驅(qū)動(dòng)的定時(shí)檢查和更新,以保證物理驅(qū)動(dòng)更新后能夠同步至容器插件中。這樣用戶創(chuàng)建容器時(shí)可以無(wú)需關(guān)心驅(qū)動(dòng)版本和設(shè)備,最合適的驅(qū)動(dòng)文件會(huì)靈活地注入容器內(nèi)部、相應(yīng)的設(shè)備會(huì)自動(dòng)掛載至容器內(nèi)。同時(shí),通過(guò)驅(qū)動(dòng)設(shè)備查詢器查詢當(dāng)前處理設(shè)備使用的目標(biāo)設(shè)備的版本,可以做到兼容和適配各種版本的infiniband設(shè)備。

      為了實(shí)現(xiàn)本公開(kāi)的容器創(chuàng)建方法,本公開(kāi)還提供了一種容器創(chuàng)建裝置,該裝置可以應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,該裝置可以應(yīng)用于容器插件。如圖8所示,該裝置可以包括:觸發(fā)接收單元81、信息獲取單元82和信息反饋單元83。其中,需要說(shuō)明的是,上述的三個(gè)單元可以是容器創(chuàng)建裝置在邏輯功能上的劃分,實(shí)際的裝置結(jié)構(gòu)設(shè)計(jì)中包括這三個(gè)單元對(duì)應(yīng)的邏輯功能即可,不一定嚴(yán)格按照這三個(gè)單元的劃分來(lái)設(shè)計(jì)。例如,圖3的容器插件中,插件擴(kuò)展觸發(fā)模塊可以相當(dāng)于上述的觸發(fā)接收單元81,可以實(shí)現(xiàn)觸發(fā)接收單元81對(duì)應(yīng)的邏輯功能;而信息獲取單元82的邏輯功能可以由圖3的驅(qū)動(dòng)和設(shè)備選擇模塊、驅(qū)動(dòng)和設(shè)備收集模塊功能實(shí)現(xiàn)。

      觸發(fā)接收單元81,用于接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;

      信息獲取單元82,用于根據(jù)觸發(fā)請(qǐng)求,獲取目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      信息反饋單元83,用于將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎,以使得所述容器引擎創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      在一個(gè)例子中,如圖9所示,所述信息獲取單元82,包括:

      版本判斷子單元821,用于判斷插件觸發(fā)請(qǐng)求中是否包括指定的驅(qū)動(dòng)版本;

      信息收集子單元822,用于當(dāng)判斷結(jié)果為否,或者判斷結(jié)果為是且確定所述驅(qū)動(dòng)版本的驅(qū)動(dòng)存在時(shí),收集所述設(shè)備信息和驅(qū)動(dòng)。

      在一個(gè)例子中,信息收集子單元822,具體用于:當(dāng)判斷結(jié)果為否時(shí),則由緩存中獲取最新的所述設(shè)備信息和驅(qū)動(dòng);當(dāng)判斷結(jié)果為是,且確定所述驅(qū)動(dòng)版本的驅(qū)動(dòng)在所述緩存中存在時(shí),則獲取所述緩存中的設(shè)備信息和驅(qū)動(dòng);當(dāng)判斷結(jié)果為是,且確定所述驅(qū)動(dòng)版本的驅(qū)動(dòng)在緩存中不存在并且是首次收集時(shí),則調(diào)用驅(qū)動(dòng)設(shè)備查詢器收集所述設(shè)備信息和驅(qū)動(dòng),并將收集到的設(shè)備信息和驅(qū)動(dòng)放入所述緩存。

      在一個(gè)例子中,信息收集子單元822,在用于調(diào)用驅(qū)動(dòng)設(shè)備查詢器收集所述設(shè)備信息和驅(qū)動(dòng),并將收集到的設(shè)備信息和驅(qū)動(dòng)放入所述緩存時(shí),包括:查詢所述驅(qū)動(dòng)設(shè)備查詢器的版本維護(hù)器中是否存儲(chǔ)所述設(shè)備信息和驅(qū)動(dòng);若不存在,則由維護(hù)的信息管理器中獲取所述設(shè)備信息和驅(qū)動(dòng)的獲取方式,并由物理設(shè)備調(diào)用器根據(jù)所述獲取方式獲得所述設(shè)備信息和驅(qū)動(dòng);將所述設(shè)備信息和驅(qū)動(dòng)存儲(chǔ)至所述版本維護(hù)器。

      為了實(shí)現(xiàn)本公開(kāi)的容器創(chuàng)建方法,本公開(kāi)還提供了一種容器創(chuàng)建裝置,該裝置可以應(yīng)用于攜帶目標(biāo)設(shè)備的容器的創(chuàng)建,該裝置可以應(yīng)用于容器引擎。如圖10所示,該裝置可以包括:請(qǐng)求發(fā)送模塊1001、信息接收模塊1002和容器創(chuàng)建模塊1003。

      請(qǐng)求發(fā)送模塊1001,用于向容器插件發(fā)送插件觸發(fā)請(qǐng)求,所述插件觸發(fā)請(qǐng)求用于觸發(fā)所述容器插件獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);

      信息接收模塊1002,用于接收所述容器插件返回的所述設(shè)備信息和驅(qū)動(dòng);

      容器創(chuàng)建模塊1003,用于使用設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶目標(biāo)設(shè)備的容器。

      上述實(shí)施例闡明的裝置或模塊,具體可以由計(jì)算機(jī)芯片或?qū)嶓w實(shí)現(xiàn),或者由具有某種功能的產(chǎn)品來(lái)實(shí)現(xiàn)。一種典型的實(shí)現(xiàn)設(shè)備為計(jì)算機(jī),計(jì)算機(jī)的具體形式可以是個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、蜂窩電話、相機(jī)電話、智能電話、個(gè)人數(shù)字助理、媒體播放器、導(dǎo)航設(shè)備、電子郵件收發(fā)設(shè)備、游戲控制臺(tái)、平板計(jì)算機(jī)、可穿戴設(shè)備或者這些設(shè)備中的任意幾種設(shè)備的組合。

      為了描述的方便,描述以上裝置時(shí)以功能分為各種模塊分別描述。當(dāng)然,在實(shí)施本公開(kāi)時(shí)可以把各模塊的功能在同一個(gè)或多個(gè)軟件和/或硬件中實(shí)現(xiàn)。

      本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本公開(kāi)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本公開(kāi)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本公開(kāi)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)指令的計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。

      這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。例如,所述介質(zhì)上存儲(chǔ)的計(jì)算機(jī)指令被處理器執(zhí)行時(shí)可以實(shí)現(xiàn)以下步驟:接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎,以使得所述容器引擎創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      在一個(gè)典型的配置中,本公開(kāi)中的處理設(shè)備還可以包括一個(gè)或多個(gè)處理器(cpu)、存儲(chǔ)器,以及存儲(chǔ)在存儲(chǔ)器上并可在處理器上運(yùn)行的計(jì)算機(jī)指令,所述計(jì)算機(jī)指令包括:用于實(shí)現(xiàn)容器插件的插件指令、以及用于實(shí)現(xiàn)容器引擎的引擎指令。

      所述處理器通過(guò)執(zhí)行所述插件指令,用于實(shí)現(xiàn)如下步驟:接收用于創(chuàng)建容器的容器引擎發(fā)送的插件觸發(fā)請(qǐng)求;根據(jù)所述觸發(fā)請(qǐng)求,獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);將所述設(shè)備信息和驅(qū)動(dòng)返回給所述容器引擎;

      所述處理器通過(guò)執(zhí)行所述引擎指令,用于實(shí)現(xiàn)如下步驟:向容器插件發(fā)送插件觸發(fā)請(qǐng)求,所述插件觸發(fā)請(qǐng)求用于觸發(fā)所述容器插件獲取所述目標(biāo)設(shè)備的設(shè)備信息和驅(qū)動(dòng);接收所述容器插件返回的設(shè)備信息和驅(qū)動(dòng);使用所述設(shè)備信息和驅(qū)動(dòng),創(chuàng)建攜帶所述目標(biāo)設(shè)備的容器。

      以上所述僅為本公開(kāi)的較佳實(shí)施例而已,并不用以限制本公開(kāi),凡在本公開(kāi)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本公開(kāi)保護(hù)的范圍之內(nèi)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1