一種Docker容器運行方法和裝置的制造方法
【技術領域】
[0001]本發(fā)明實施例涉及通信領域,尤其涉及一種Docker容器運行方法和裝置。
【背景技術】
[0002]集裝箱(Docker)是一個開源的應用容器引擎,旨在提供一種應用的自動化部署解決方案,在Linux系統(tǒng)上迅速創(chuàng)建一個容器(container ),容器即為輕量級虛擬機,并部署和運行應用,并通過配置文件可以輕松實現(xiàn)應用的自動化安裝、部署和升級,非常方便。Docker虛擬出多個容器,每個容器之間相互隔離沒有接口,可以將彼此的生產(chǎn)環(huán)境和開發(fā)環(huán)境分開,互不影響。
[0003]目前云服務的基石是操作系統(tǒng)級別的隔離,在同一臺宿主機上通過一個或多個虛擬機(Vitual Machine,簡稱VM)運行業(yè)務,而Docker實現(xiàn)了一種應用級別的隔離,它改變了基本的開發(fā)、操作單元,由直接操作VM轉(zhuǎn)換為操作應用運行的“容器”。隨著Docker容器技術在開發(fā)、測試、生產(chǎn)環(huán)境的逐步使用,如何在Dcoker上運行之前在虛擬機中構(gòu)建的應用,是目前重點研究的一個課題。
[0004]現(xiàn)有技術的一種方案為:開發(fā)人員研究應用在虛擬機上的部署,具體包括該應用的部署架構(gòu)、部署組件、安裝配置方式、調(diào)測方式等信息,之后,開發(fā)人員依據(jù)Docker容器鏡像要求,構(gòu)建該應用對應的容器鏡像,之后對構(gòu)建完成的容器鏡像進行部署和配置,并進行測試,測試成功之后將該應用的容器鏡像存儲至Docker的容器鏡像倉庫,需要運行該應用時,從容器鏡像倉庫調(diào)用該應用的容器鏡像并運行。
[0005]可見,上述方法在運行以前構(gòu)建在虛擬機上的應用的虛擬機鏡像時,需要先將根據(jù)該應用的虛擬機鏡像通過人工方式轉(zhuǎn)換為容器鏡像。該方法中,開發(fā)人員需要研究該應用在虛擬機上的部署,并且還需要了解Docker容器鏡像要求,并構(gòu)建該應用的容器鏡像,該過程對開發(fā)人員要求較高,且由于應用在虛擬機上的部署時間經(jīng)歷較長,且較為復雜,因此需要浪費開發(fā)人員的大量精力和時間。
[0006]綜上,亟需一種Docker容器運行方法和裝置,用于通過簡單高效的方法在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用。
【發(fā)明內(nèi)容】
[0007]本發(fā)明實施例提供一種Docker容器運行方法和裝置,用于通過簡單高效的方法在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用。
[0008]本發(fā)明實施例提供一種集裝箱Docker容器運行方法,包括:
[0009]接收用于指示運行待執(zhí)行應用對應的Docker容器的執(zhí)行命令;其中,執(zhí)行命令中包括待執(zhí)行應用的標識;
[0010]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像;
[0011]從虛擬機鏡像中的所有層數(shù)據(jù)中讀出Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息;其中,Docker容器對應的層數(shù)據(jù)為用于運行待執(zhí)行應用對應的Docker容器所需要的層數(shù)據(jù);
[0012]根據(jù)讀出的Docker容器對應的層數(shù)據(jù),生成Docker容器對應的快照層文件,其中,Docker容器對應的快照層文件包括Docker容器對應的層數(shù)據(jù)的快照;Docker容器對應的快照層文件為可讀可寫的層文件;
[0013]將Docker容器對應的快照層文件掛載至工作目錄,并根據(jù)讀出的虛擬機鏡像的元數(shù)據(jù)信息進行環(huán)境配置;
[0014]通過運行掛載至工作目錄的Docker容器對應的快照層文件,運行待執(zhí)行應用對應的Docker容器。
[0015]由于本發(fā)明實施例中可以從虛擬機鏡像中的所有層數(shù)據(jù)中讀出Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,且Docker容器對應的層數(shù)據(jù)為用于運行待執(zhí)行應用對應的Docker容器所需要的層數(shù)據(jù),進而,可根據(jù)該讀出的Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,運行待執(zhí)行應用對應的Docker容器??梢?,該過程簡便快捷,且避免了現(xiàn)有技術中使用人工的方式將待執(zhí)行應用的虛擬機鏡像轉(zhuǎn)換為容器鏡像的方法,也無需開發(fā)人員既要了解待執(zhí)行應用對應的虛擬機鏡像的整體部署,也要了解容器鏡像的構(gòu)建方法,可見,本發(fā)明實施例提供的方法能夠簡單高效的在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用,且降低了對開發(fā)人員的要求。
[0016]可選地,從虛擬機鏡像中的所有層數(shù)據(jù)中讀出Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,具體包括:
[0017]調(diào)用虛擬機鏡像驅(qū)動,并通過所調(diào)用的虛擬機鏡像驅(qū)動從虛擬機鏡像中的所有層數(shù)據(jù)中讀出Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息。
[0018]具體來說,可在虛擬機鏡像驅(qū)動中配置所需讀取的虛擬機鏡像的格式等信息,如此,可成功通過虛擬機鏡像讀取虛擬機鏡像,如此則實現(xiàn)了直接讀取虛擬機鏡像中的Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息的目的,避免了現(xiàn)有技術中使用人工的方式將待執(zhí)行應用的虛擬機鏡像轉(zhuǎn)換為容器鏡像的方法,也無需開發(fā)人員既要了解待執(zhí)行應用對應的虛擬機鏡像的整體部署,也要了解容器鏡像的構(gòu)建方法,可見,本發(fā)明實施例提供的方法能夠簡單高效的在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用,且降低了對開發(fā)人員的要求。
[0019]可選地,Docker容器對應的層數(shù)據(jù)包括:
[0020]虛擬機鏡像中的所有層數(shù)據(jù)中除內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件之外的層數(shù)據(jù)。
[0021]由于運行待執(zhí)行應用程序的Docker容器時,可以不運行內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件,因此本發(fā)明實施例中在運行待執(zhí)行應用程序的Docker容器,也可不讀取虛擬機鏡像中的內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件,如此,可減輕網(wǎng)絡負荷,提高數(shù)據(jù)處理速度。
[0022]可選地,根據(jù)讀出的虛擬機鏡像的元數(shù)據(jù)信息進行環(huán)境配置,具體包括:
[0023]根據(jù)讀出的待執(zhí)行應用對應的虛擬機鏡像的元數(shù)據(jù)信息,對系統(tǒng)參數(shù)進行配置,以使配置之后的系統(tǒng)參數(shù)與待執(zhí)行應用對應的虛擬機鏡像的元數(shù)據(jù)信息相匹配;
[0024]其中,系統(tǒng)參數(shù)為環(huán)境變量。
[0025]具體來說,在運行待執(zhí)行應用之前,將系統(tǒng)的參數(shù)進行配置,以使配置之后的系統(tǒng)參數(shù)與待執(zhí)行應用對應的虛擬機鏡像的元數(shù)據(jù)信息相匹配,如此,可提高運行待執(zhí)行應用的成功率。
[0026]可選地,根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像之前,還包括:
[0027]基于虛擬機技術,生成待執(zhí)行應用對應的虛擬機鏡像,并將虛擬機鏡像存儲于虛擬機鏡像存儲區(qū)域;
[0028]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像,具體包括:
[0029]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,從虛擬機鏡像存儲區(qū)域,獲取待執(zhí)行應用的標識對應的虛擬機鏡像。
[0030]如此,可根據(jù)待執(zhí)行應用的標識快速的確定出待執(zhí)行應用的標識對應的虛擬機鏡像,提高了數(shù)據(jù)處理速度。
[0031]本發(fā)明實施例提供一種集裝箱Docker容器運行方法,包括:
[0032]接收用于指示運行待執(zhí)行應用對應的Docker容器的執(zhí)行命令;其中,執(zhí)行命令中包括待執(zhí)行應用的標識;
[0033 ]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像;
[0034]從虛擬機鏡像中讀出所有層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息;
[0035]根據(jù)讀出的所有層數(shù)據(jù),生成所有層數(shù)據(jù)對應的快照層文件;所有層數(shù)據(jù)對應的快照層文件為可讀可寫的層文件;
[0036]將所有層數(shù)據(jù)對應的快照層文件掛載至第一工作目錄;
[0037]從掛載至第一工作目錄的所有層數(shù)據(jù)對應的快照層文件中,刪除Docker容器對應的層數(shù)據(jù)之外的層數(shù)據(jù);其中,Docker容器對應的層數(shù)據(jù)為用于運行待執(zhí)行應用對應的Docker容器所需要的層數(shù)據(jù);
[0038]將進行刪除操作之后的所有層數(shù)據(jù)對應的快照層文件中剩余的層文件,以及虛擬機鏡像的元數(shù)據(jù)信息進行打包,得到預處理鏡像;
[0039]根據(jù)預處理鏡像,生成容器鏡像的元數(shù)據(jù)信息;其中,容器鏡像的元數(shù)據(jù)信息包括預處理鏡像的格式信息;
[0040]將預處理鏡像和容器鏡像的元數(shù)據(jù)信息打包,得到待執(zhí)行應用的標識對應的容器鏡像;
[0041]通過運行待執(zhí)行應用的標識對應的容器鏡像,運行待執(zhí)行應用對應的Docker容器。
[0042]由于本發(fā)明實施例中可以從虛擬機鏡像中的所有層數(shù)據(jù)中讀出Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,且Docker容器對應的層數(shù)據(jù)為用于運行待執(zhí)行應用對應的Docker容器所需要的層數(shù)據(jù),進而,可根據(jù)該讀出的Docker容器對應的層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,運行待執(zhí)行應用對應的Docker容器??梢?,該過程簡便快捷,且避免了現(xiàn)有技術中使用人工的方式將待執(zhí)行應用的虛擬機鏡像轉(zhuǎn)換為容器鏡像的方法,也無需開發(fā)人員既要了解待執(zhí)行應用對應的虛擬機鏡像的整體部署,也要了解容器鏡像的構(gòu)建方法,可見,本發(fā)明實施例提供的方法能夠簡單高效的在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用,且降低了對開發(fā)人員的要求。
[0043]可選地,從虛擬機鏡像中讀出所有層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息,具體包括:
[0044]調(diào)用虛擬機鏡像驅(qū)動,并通過所調(diào)用的虛擬機鏡像驅(qū)動從虛擬機鏡像中讀出所有層數(shù)據(jù)和虛擬機鏡像的元數(shù)據(jù)信息。
[0045]具體來說,可在虛擬機鏡像驅(qū)動中配置所需讀取的虛擬機鏡像的格式等信息,如此,可成功通過虛擬機鏡像讀取虛擬機鏡像。
[0046]可選地,Docker容器對應的層數(shù)據(jù)包括:
[0047]虛擬機鏡像中的所有層數(shù)據(jù)中除內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件之外的層數(shù)據(jù);
[0048]容器鏡像的元數(shù)據(jù)信息包括:預處理鏡像中信息的存放格式、存放位置,以及Docker容器對應的層數(shù)據(jù)中各個層數(shù)據(jù)之間的層次關系。
[0049]由于運行待執(zhí)行應用程序的Docker容器時,可以不運行內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件,因此本發(fā)明實施例中將內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件從所有層數(shù)據(jù)對應的快照層文件中刪除,如此,新生成的容器鏡像中就不包括內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件,運行容器鏡像時,也就可以不讀取內(nèi)核文件、系統(tǒng)目錄,以及根(boot)目錄下的文件等文件,如此,可減輕網(wǎng)絡負荷,提高數(shù)據(jù)處理速度。
[0050]可選地,將預處理鏡像和容器鏡像的元數(shù)據(jù)信息打包,得到待執(zhí)行應用的標識對應的容器鏡像之后,還包括:
[0051 ]將待執(zhí)行應用的標識對應的容器鏡像存儲于容器鏡像存儲區(qū)域;
[0052]刪除所有層數(shù)據(jù)對應的快照層文件,卸載待執(zhí)行應用的標識對應的虛擬機鏡像。如此,可減少資源占用,減小系統(tǒng)負荷。
[0053]可選地,運行待執(zhí)行應用的標識對應的容器鏡像,具體包括:
[0054]從容器鏡像中讀出Docker容器對應的層數(shù)據(jù)和容器鏡像的元數(shù)據(jù)信息;其中,Docker容器對應的層數(shù)據(jù)為用于運行待執(zhí)行應用對應的Docker容器所需要的層數(shù)據(jù);
[0055]根據(jù)讀出的Docker容器對應的層數(shù)據(jù),生成Docker容器對應的快照層文件,其中,Docker容器對應的快照層文件包括Docker容器對應的層數(shù)據(jù)的快照;Docker容器對應的快照層文件為可讀可寫的層文件;
[0056]將Docker容器對應的快照層文件掛載至第二工作目錄,并根據(jù)讀出的容器鏡像的元數(shù)據(jù)信息進行環(huán)境配置;
[0057]通過運行掛載至第二工作目錄的快照層文件,運行待執(zhí)行應用對應的Docker容器。
[0058]如此,可通過讀取容器鏡像,運行待執(zhí)行應用對應的Docker容器。且避免了現(xiàn)有技術中使用人工的方式將待執(zhí)行應用的虛擬機鏡像轉(zhuǎn)換為容器鏡像的方法,也無需開發(fā)人員既要了解待執(zhí)行應用對應的虛擬機鏡像的整體部署,也要了解容器鏡像的構(gòu)建方法,可見,本發(fā)明實施例提供的方法能夠簡單高效的在Dcoker容器上運行之前在虛擬機中構(gòu)建的應用,且降低了對開發(fā)人員的要求。
[0059]可選地,從容器鏡像中讀出Docker容器對應的層數(shù)據(jù)和容器鏡像的元數(shù)據(jù)信息,具體包括:
[0060]調(diào)用容器鏡像驅(qū)動,并通過所調(diào)用的容器鏡像驅(qū)動從容器鏡像中讀出Docker容器對應的層數(shù)據(jù)和容器鏡像的元數(shù)據(jù)信息。
[0061 ]具體來說,可在容器鏡像驅(qū)動中配置所需讀取的容器鏡像的格式等信息,如此,可成功通過容器鏡像讀取容器鏡像。
[0062]可選地,根據(jù)讀出的容器鏡像中的元數(shù)據(jù)信息進行環(huán)境配置,具體包括:
[0063]根據(jù)讀出的待執(zhí)行應用對應的容器鏡像中的元數(shù)據(jù)信息,對系統(tǒng)參數(shù)進行配置,以使配置之后的系統(tǒng)參數(shù)與待執(zhí)行應用對應的容器鏡像中的元數(shù)據(jù)信息相匹配;
[0064]其中,系統(tǒng)參數(shù)為環(huán)境變量。
[0065]具體來說,在運行待執(zhí)行應用之前,將系統(tǒng)的參數(shù)進行配置,以使配置之后的系統(tǒng)參數(shù)與待執(zhí)行應用對應的虛擬機鏡像的元數(shù)據(jù)信息相匹配,如此,可提高運行待執(zhí)行應用的成功率。
[0066]可選地,根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像之前,還包括:
[0067]基于虛擬機技術,生成待執(zhí)行應用的標識對應的虛擬機鏡像,并將待執(zhí)行應用的標識對應的虛擬機鏡像存儲于虛擬機鏡像存儲區(qū)域;
[0068]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像,具體包括:
[0069]根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,從虛擬機鏡像存儲區(qū)域,獲取待執(zhí)行應用的標識對應的虛擬機鏡像。
[0070]如此,可根據(jù)待執(zhí)行應用的標識快速的確定出待執(zhí)行應用的標識對應的虛擬機鏡像,提高了數(shù)據(jù)處理速度。
[0071 ]本發(fā)明實施例提供一種集裝箱Docker容器運行裝置,包括:
[0072]接收單元,用于接收用于指示運行待執(zhí)行應用對應的Docker容器的執(zhí)行命令;其中,執(zhí)行命令中包括待執(zhí)行應用的標識;
[0073]獲取單元,用于根據(jù)執(zhí)行命令中包括的待執(zhí)行應用的標識,獲取待執(zhí)行應用的標識對應的虛擬機鏡像;
[0074]處理單元