本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種容器訪問方法、裝置以及系統(tǒng)。
背景技術(shù):
現(xiàn)階段,容器作為一種輕量級的虛擬機(jī)技術(shù),由于創(chuàng)建、銷毀成本低;系統(tǒng)、進(jìn)程相互隔離,越來越多的系統(tǒng)和架構(gòu)采用容器來進(jìn)行部署,使用也日益廣泛。
在傳統(tǒng)的運(yùn)維服務(wù)中,需要使用ssh協(xié)議提供登錄功能,而當(dāng)采用大規(guī)模容器技術(shù)時,往往無法很好的提供登錄訪問功能,存在以下問題:1、由于容器技術(shù)一般是單進(jìn)程,額外運(yùn)行ssh協(xié)議對應(yīng)的sshd進(jìn)程會浪費(fèi)大量的資源;2、為每個單獨(dú)容器配置用戶名、密碼,十分繁瑣,運(yùn)維效率較低;3、為每個容器提供訪問路徑會照成網(wǎng)絡(luò)資源的浪費(fèi)。因此,當(dāng)前技術(shù)中大規(guī)模容器部署時的登錄訪問功能,亟待進(jìn)一步的完善和解決。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種容器訪問方法、裝置以及系統(tǒng),能夠用于容器的登錄,無須運(yùn)行額外的進(jìn)程或者單獨(dú)配置用戶名、密碼以及訪問路徑,效率較高。
本發(fā)明第一方面提供了一種容器訪問方法,包括:
接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息;
根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息;
根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程;
通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
可選地,所述根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,包括:
解析所述登錄請求包括的鑒權(quán)信息,所述鑒權(quán)信息包括用戶賬號以及密碼;
驗(yàn)證所述用戶賬號以及密碼是否匹配;
獲取所述用戶賬號對應(yīng)的登錄權(quán)限,判斷所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限;
若所述用戶賬號以及密碼匹配,且所述用戶賬號對所述目標(biāo)容器具有登錄權(quán)限,則確認(rèn)為所述登錄請求驗(yàn)證通過。
可選地,所述獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,包括:
根據(jù)所述目標(biāo)容器信息,向預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求;
接收所述關(guān)系型數(shù)據(jù)庫的返回信息,根據(jù)所述返回信息獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,
其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
可選地,所述在所述目標(biāo)容器上啟動殼進(jìn)程,包括:
根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息在容器集群中查找所述目標(biāo)容器;
通過容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程;
通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
本發(fā)明第二方面提供了一種容器訪問裝置,包括:
接收模塊,用于接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息;
驗(yàn)證模塊,用于根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息;
啟動模塊,用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程;
數(shù)據(jù)交換模塊,用于通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
可選地,所述驗(yàn)證模塊包括:
解析單元,用于解析所述登錄請求包括的鑒權(quán)信息,所述鑒權(quán)信息包括用戶賬號以及密碼;
第一驗(yàn)證單元,用于驗(yàn)證所述用戶賬號以及密碼是否匹配;
第二驗(yàn)證單元,用于獲取所述用戶賬號對應(yīng)的登錄權(quán)限,判斷所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限;
確定單元,用于當(dāng)所述用戶賬號以及密碼匹配,且所述用戶賬號對所述目標(biāo)容器具有登錄權(quán)限時,確認(rèn)為所述登錄請求驗(yàn)證通過。
可選地,所述驗(yàn)證模塊還包括:
查詢單元,用于根據(jù)所述目標(biāo)容器信息,向預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求;
獲取單元,用于接收所述關(guān)系型數(shù)據(jù)庫的返回信息,根據(jù)所述返回信息獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,
其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
可選地,所述啟動模塊包括:
查找單元,用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息在容器集群中查找所述目標(biāo)容器;
啟動單元,用于通過容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程;
交互單元,用于通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
本發(fā)明第三方面提供了一種容器訪問系統(tǒng),包括:客戶端、登錄服務(wù)器以及容器集群,所述容器集群包括容器引擎以及至少一個容器;
所述客戶端,用于向所述登錄服務(wù)器發(fā)送登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息;
所述登錄服務(wù)器,用于根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息;
所述登錄服務(wù)器還用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述容器集群中查找所述目標(biāo)容器,并在所述目標(biāo)容器上啟動殼進(jìn)程;
所述登錄服務(wù)器還用于通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
可選地,所述容器訪問系統(tǒng)還包括:鑒權(quán)服務(wù)器;
所述登錄服務(wù)器向所述鑒權(quán)服務(wù)器發(fā)送鑒權(quán)請求,所述鑒權(quán)請求包括所述鑒權(quán)信息以及目標(biāo)容器信息,所述鑒權(quán)信息包括用戶賬號以及密碼;
所述鑒權(quán)服務(wù)器,用于驗(yàn)證所述用戶賬號以及密碼是否匹配以及所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限。
可選地,所述容器訪問系統(tǒng)還包括:關(guān)系型數(shù)據(jù)庫;
所述登錄服務(wù)器根據(jù)所述目標(biāo)容器信息,向關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求;
所述關(guān)系型數(shù)據(jù),用于根據(jù)所述查詢請求返回相應(yīng)的查詢信息,所述查詢信息包括所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,
其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
可選地,所述登錄服務(wù)器在所述目標(biāo)容器上啟動殼進(jìn)程,包括:
所述登錄服務(wù)器通過所述容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程;
所述登錄服務(wù)器還用于通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
實(shí)施本發(fā)明,具有如下有益效果:
本發(fā)明通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
附圖說明
為了更清楚地說明本發(fā)明中的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例提供的一種容器訪問方法第一實(shí)施例的流程圖。
圖2為本發(fā)明實(shí)施例提供的一種容器訪問方法第二實(shí)施例的流程圖。
圖3為本發(fā)明實(shí)施例提供的一種容器訪問方法第三實(shí)施例的流程圖。
圖4為本發(fā)明實(shí)施例提供的一種容器訪問方法第四實(shí)施例的流程圖。
圖5為本發(fā)明實(shí)施例提供的一種容器訪問裝置一種實(shí)施方式的結(jié)構(gòu)示意圖。
圖6為本發(fā)明實(shí)施例提供的一種容器訪問系統(tǒng)一種實(shí)施方式的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”和“第三”等是用于區(qū)別不同對象,而非用于描述特定順序。此外,術(shù)語“包括”以及它們?nèi)魏巫冃?,意圖在于覆蓋不排他的包含。例如包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備沒有限定于已列出的步驟或單元,而是可選地還包括沒有列出的步驟或單元,或可選地還包括對于這些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
圖1為本發(fā)明實(shí)施例提供的一種容器訪問方法第一實(shí)施例的流程圖。在本實(shí)施方式中,該容器訪問方法應(yīng)用于登錄服務(wù)器,所述登錄服務(wù)器用于接收客戶端的訪問,并根據(jù)客戶端的訪問查找對應(yīng)的容器,使得客戶端能夠通過該登錄服務(wù)器訪問到對應(yīng)的容器。可選地,該登錄服務(wù)器還可以實(shí)現(xiàn)鑒權(quán)等功能,在客戶端發(fā)送訪問請求時,判斷該訪問請求是否合法有效。本實(shí)施例中,該容器訪問方法包括以下步驟S101-S104。
在步驟S101中,接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。
具體的,當(dāng)用戶想要登錄相應(yīng)的容器時,用戶通過客戶端發(fā)送相應(yīng)的登錄請求。其中,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。可選的,登錄服務(wù)器可以提供相應(yīng)的登錄界面,客戶端通過訪問該登錄界面,輸入相應(yīng)的鑒權(quán)信息以及目標(biāo)容器信息。所述鑒權(quán)信息包括用戶名以及密碼信息,所述目標(biāo)容器信息包括用戶想要登錄的目標(biāo)容器的標(biāo)識信息。
在步驟S102中,根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
具體的,在獲取到所述登錄請求了之后,還需要驗(yàn)證所述登錄請求是否有效。本實(shí)施例中,可以通過專門的鑒權(quán)服務(wù)器進(jìn)行驗(yàn)證,所述鑒權(quán)服務(wù)器上保存有相應(yīng)的鑒權(quán)信息以及權(quán)限信息;也可以由登錄服務(wù)器自行進(jìn)行驗(yàn)證。所述驗(yàn)證過程主要包括驗(yàn)證用戶名以及密碼是否匹配,以及該用戶名是否具有該隊(duì)員的目標(biāo)容器的訪問權(quán)限等。當(dāng)驗(yàn)證通過時,進(jìn)一步的獲取該目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
在步驟S103中,根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程。
具體的,在獲取到目標(biāo)容器的相關(guān)信息了之后,在目標(biāo)容器上啟動殼進(jìn)程??梢岳斫獾氖?,可以是通過容器引擎在目標(biāo)容器上啟動殼進(jìn)程,所述殼進(jìn)程可用于實(shí)現(xiàn)登錄以及訪問。
在步驟S104中,通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
具體的,在目標(biāo)容器上建立了相應(yīng)的殼進(jìn)程了之后,通過該殼進(jìn)程與客戶端建立數(shù)據(jù)交換鏈接,從而可以實(shí)現(xiàn)客戶端直接與容器進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)客戶端對容器的訪問。
上述可知,本發(fā)明實(shí)施例中的容器訪問方法,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
圖2為本發(fā)明實(shí)施例提供的一種容器訪問方法第二實(shí)施例的流程圖。對比圖1所示的第一實(shí)施例,在本實(shí)施例中,進(jìn)一步包括了驗(yàn)證登錄請求的步驟,該容器訪問方法包括以下步驟S201-S208。
在步驟S201中,接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。
在步驟S202中,解析所述登錄請求包括的鑒權(quán)信息,所述鑒權(quán)信息包括用戶賬號以及密碼。
具體的,在獲取到登錄請求之后,解析其中的鑒權(quán)信息,所述鑒權(quán)信息包括用戶賬號以及密碼。其中,所述用戶賬號以及密碼用于執(zhí)行后續(xù)的登錄操作,在本實(shí)施方式中,可以根據(jù)用戶賬號以及密碼進(jìn)行驗(yàn)證是否是有效的登錄請求。
在步驟S203中,驗(yàn)證所述用戶賬號以及密碼是否匹配。
具體的,可以通過查詢數(shù)據(jù)庫的方式驗(yàn)證所述用戶賬號以及密碼是否匹配。
在步驟S204中,獲取所述用戶賬號對應(yīng)的登錄權(quán)限,判斷所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限。
具體的,在用戶賬號以及密碼匹配時,進(jìn)一步的獲取用戶賬號對應(yīng)的登錄權(quán)限,并判斷用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限??梢岳斫獾氖牵煌挠脩糍~號對應(yīng)著不同容器的的登錄權(quán)限。
在步驟S205中,若所述用戶賬號以及密碼匹配,且所述用戶賬號對所述目標(biāo)容器具有登錄權(quán)限,則確認(rèn)為所述登錄請求驗(yàn)證通過。
具體的,當(dāng)用戶賬號、密碼匹配,以及登錄權(quán)限也具備時,才確認(rèn)為登錄請求驗(yàn)證通過。
在步驟S206中,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
在步驟S207中,根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程。
在步驟S208中,通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
上述可知,本發(fā)明實(shí)施例中的容器訪問方法,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并根據(jù)登錄請求進(jìn)行相應(yīng)的鑒權(quán)驗(yàn)證操作,在驗(yàn)證通過時,根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
圖3為本發(fā)明實(shí)施例提供的一種容器訪問方法第三實(shí)施例的流程圖。對比圖1所示的第一實(shí)施例,在本實(shí)施方式中,進(jìn)一步包括了獲取目標(biāo)容器信息的步驟,可以理解的是,本實(shí)施例中獲取目標(biāo)容器信息的步驟也可運(yùn)用于圖2所示的第二實(shí)施例中。該容器訪問方法包括以下步驟S301-S306。
在步驟S301中,接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。
在步驟S302中,根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求。
在步驟S303中,根據(jù)所述目標(biāo)容器信息,向預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求。
具體的,當(dāng)鑒權(quán)信息驗(yàn)證有效通過時,根據(jù)登錄請求中的目標(biāo)容器信息,進(jìn)一步進(jìn)行查詢。本實(shí)施例中,通過向預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求。所述關(guān)系型數(shù)據(jù)庫中保存了當(dāng)前所有容器的相關(guān)信息。關(guān)系型數(shù)據(jù)庫在接收到查詢請求之后會返回相應(yīng)的信息。
在步驟S304中,接收所述關(guān)系型數(shù)據(jù)庫的返回信息,根據(jù)所述返回信息獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
具體的,接收關(guān)系型數(shù)據(jù)庫的返回信息,根據(jù)返回信息獲取目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
在步驟S305中,根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程。
在步驟S306中,通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
上述可知,本發(fā)明實(shí)施例中的容器訪問方法,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
圖4為本發(fā)明實(shí)施例提供的一種容器訪問方法第四實(shí)施例的流程圖。對比圖1所示的第一實(shí)施例,在本實(shí)施例中,進(jìn)一步包括了在目標(biāo)容器上啟動殼進(jìn)程的步驟??梢岳斫獾氖?,本實(shí)施例中啟動殼進(jìn)程的步驟也可以運(yùn)用于圖2或者圖3所示的實(shí)施例中。該容器訪問方法包括以下步驟S401-S406。
在步驟S401中,接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。
在步驟S402中,根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
在步驟S403中,根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息在容器集群中查找所述目標(biāo)容器。
具體的,由于容器集群中存在著很多的容器,此時根據(jù)目標(biāo)容器的網(wǎng)絡(luò)位置信息在容器集群中進(jìn)行定位,查找對應(yīng)的目標(biāo)容器。
在步驟S404中,通過容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程。
具體的,在查找到目標(biāo)容器了之后,通過容器引擎在目標(biāo)容器上啟動殼shell進(jìn)程,所述殼進(jìn)程可用于目標(biāo)容器的登錄。
在步驟S405中,通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
具體的,在本步驟中,登錄服務(wù)器通過websocket協(xié)議與容器引擎進(jìn)行交互,并接管目標(biāo)容器上殼進(jìn)程的輸入流和輸出流。本領(lǐng)域技術(shù)人員可以理解的是,websocket協(xié)議可用于實(shí)現(xiàn)雙工通信。
在步驟S406中,通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
上述可知,本發(fā)明實(shí)施例中的容器訪問方法,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,由于登錄服務(wù)器與容器引擎之間采用websocket協(xié)議,可以實(shí)現(xiàn)雙工通信,因此從客戶端側(cè)來看,可以達(dá)到模擬ssh協(xié)議登錄的目的,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
為便于更好的實(shí)施本發(fā)明實(shí)施例的上述方案,下面還提供用于配合實(shí)施上述方案的相關(guān)裝置。
圖5所示為本發(fā)明實(shí)施例提供的一種容器訪問裝置一種實(shí)施方式的結(jié)構(gòu)示意圖。該容器訪問裝置應(yīng)用于登錄服務(wù)器,所述登錄服務(wù)器用于接收客戶端的訪問,并根據(jù)客戶端的訪問查找對應(yīng)的容器,使得客戶端能夠通過該登錄服務(wù)器訪問到對應(yīng)的容器??蛇x地,該登錄服務(wù)器還可以實(shí)現(xiàn)鑒權(quán)等功能,在客戶端發(fā)送訪問請求時,判斷該訪問請求是否合法有效。本實(shí)施例中,該容器訪問裝置包括接收模塊501、驗(yàn)證模塊502、啟動模塊503以及數(shù)據(jù)交換模塊504。
接收模塊501,用于接收客戶端發(fā)送的登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。
具體的,當(dāng)用戶想要登錄相應(yīng)的容器時,用戶通過客戶端發(fā)送相應(yīng)的登錄請求,接收模塊501接收所述登錄請求。其中,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息。可選的,登錄服務(wù)器可以提供相應(yīng)的登錄界面,客戶端通過訪問該登錄界面,輸入相應(yīng)的鑒權(quán)信息以及目標(biāo)容器信息。所述鑒權(quán)信息包括用戶名以及密碼信息,所述目標(biāo)容器信息包括用戶想要登錄的目標(biāo)容器的標(biāo)識信息。
驗(yàn)證模塊502,用于根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
具體的,在獲取到所述登錄請求了之后,驗(yàn)證模塊502驗(yàn)證所述登錄請求是否有效。本實(shí)施例中,可以通過專門的鑒權(quán)服務(wù)器進(jìn)行驗(yàn)證,所述鑒權(quán)服務(wù)器上保存有相應(yīng)的鑒權(quán)信息以及權(quán)限信息;也可以由登錄服務(wù)器自行進(jìn)行驗(yàn)證。所述驗(yàn)證過程主要包括驗(yàn)證用戶名以及密碼是否匹配,以及該用戶名是否具有該隊(duì)員的目標(biāo)容器的訪問權(quán)限等。當(dāng)驗(yàn)證通過時,進(jìn)一步的獲取該目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息。
啟動模塊503,用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述目標(biāo)容器上啟動殼進(jìn)程。
具體的,在獲取到目標(biāo)容器的相關(guān)信息了之后,啟動模塊503在目標(biāo)容器上啟動殼進(jìn)程??梢岳斫獾氖?,可以是通過容器引擎在目標(biāo)容器上啟動殼進(jìn)程,所述殼進(jìn)程可用于實(shí)現(xiàn)登錄以及訪問。
數(shù)據(jù)交換模塊504,用于通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
具體的,在目標(biāo)容器上建立了相應(yīng)的殼進(jìn)程了之后,數(shù)據(jù)交換模塊504通過該殼進(jìn)程與客戶端建立數(shù)據(jù)交換鏈接,從而可以實(shí)現(xiàn)客戶端直接與容器進(jìn)行數(shù)據(jù)交換,實(shí)現(xiàn)客戶端對容器的訪問。
上述可知,本發(fā)明實(shí)施例中的容器訪問裝置,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
在其他實(shí)施方式中,所述驗(yàn)證模塊502可進(jìn)一步包括:
解析單元,用于解析所述登錄請求包括的鑒權(quán)信息,所述鑒權(quán)信息包括用戶賬號以及密碼;
第一驗(yàn)證單元,用于驗(yàn)證所述用戶賬號以及密碼是否匹配;
第二驗(yàn)證單元,用于獲取所述用戶賬號對應(yīng)的登錄權(quán)限,判斷所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限;
確定單元,用于當(dāng)所述用戶賬號以及密碼匹配,且所述用戶賬號對所述目標(biāo)容器具有登錄權(quán)限時,確認(rèn)為所述登錄請求驗(yàn)證通過。
在其他實(shí)施方式中,所述驗(yàn)證模塊502可進(jìn)一步包括:
查詢單元,用于根據(jù)所述目標(biāo)容器信息,向預(yù)設(shè)的關(guān)系型數(shù)據(jù)庫發(fā)出查詢請求;
獲取單元,用于接收所述關(guān)系型數(shù)據(jù)庫的返回信息,根據(jù)所述返回信息獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,
其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
在其他實(shí)施方式中,所述啟動模塊503可進(jìn)一步包括:
查找單元,用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息在容器集群中查找所述目標(biāo)容器;
啟動單元,用于通過容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程;
交互單元,用于通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
上述可知,本發(fā)明實(shí)施例中的容器訪問裝置,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,由于登錄服務(wù)器與容器引擎之間采用websocket協(xié)議,可以實(shí)現(xiàn)雙工通信,因此從客戶端側(cè)來看,可以達(dá)到模擬ssh協(xié)議登錄的目的,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
本發(fā)明實(shí)施例還提供了一種終端,所述終端包括如圖5所述的容器訪問裝置,所述終端可以應(yīng)用如圖1-4所述的容器訪問方法。
上述可知,本發(fā)明實(shí)施例中的終端,通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
圖6所示為本發(fā)明實(shí)施例提供的一種容器訪問系統(tǒng)一種實(shí)施方式的結(jié)構(gòu)示意圖。如圖所示,所述容器訪問系統(tǒng)600包括:客戶端601、登錄服務(wù)器602以及容器集群603。其中,所述容器集群603包括容器引擎以及至少一個容器。在其他實(shí)施方式中,所述容器訪問系統(tǒng)600還可以進(jìn)一步包括:鑒權(quán)服務(wù)器604以及關(guān)系型數(shù)據(jù)庫605。下面詳細(xì)介紹容器訪問系統(tǒng)600各結(jié)構(gòu)的功能。
客戶端601,用于向所述登錄服務(wù)器602發(fā)送登錄請求,所述登錄請求包括鑒權(quán)信息以及目標(biāo)容器信息;
所述登錄服務(wù)器602,用于根據(jù)所述鑒權(quán)信息驗(yàn)證所述登錄請求,并在所述登錄請求驗(yàn)證通過時,獲取所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息;
所述登錄服務(wù)器602還用于根據(jù)所述運(yùn)行信息以及網(wǎng)絡(luò)位置信息,在所述容器集群603中查找所述目標(biāo)容器,并在所述目標(biāo)容器上啟動殼進(jìn)程;
所述登錄服務(wù)器602還用于通過所述殼進(jìn)程與所述客戶端建立數(shù)據(jù)交換鏈接。
上述可知,本發(fā)明實(shí)施例中的容器訪問系統(tǒng),通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
在其他實(shí)施方式中,所述登錄服務(wù)器602向所述鑒權(quán)服務(wù)器604發(fā)送鑒權(quán)請求,所述鑒權(quán)請求包括所述鑒權(quán)信息以及目標(biāo)容器信息,所述鑒權(quán)信息包括用戶賬號以及密碼;
所述鑒權(quán)服務(wù)器604,用于驗(yàn)證所述用戶賬號以及密碼是否匹配以及所述用戶賬號對所述目標(biāo)容器是否具有登錄權(quán)限。
在其他實(shí)施方式中,所述登錄服務(wù)器602根據(jù)所述目標(biāo)容器信息,向關(guān)系型數(shù)據(jù)庫605發(fā)出查詢請求;
所述關(guān)系型數(shù)據(jù)605,用于根據(jù)所述查詢請求返回相應(yīng)的查詢信息,所述查詢信息包括所述目標(biāo)容器的運(yùn)行信息以及網(wǎng)絡(luò)位置信息,
其中,所述運(yùn)行信息包括:運(yùn)行、暫停以及退出;所述網(wǎng)絡(luò)位置信息包括:內(nèi)網(wǎng)IP地址。
在其他實(shí)施方式中,所述登錄服務(wù)器602在所述目標(biāo)容器上啟動殼進(jìn)程,包括:
所述登錄服務(wù)器602通過所述容器引擎在所述目標(biāo)容器上啟動殼進(jìn)程;
所述登錄服務(wù)器602還用于通過websocket協(xié)議與所述容器引擎進(jìn)行交互,接管所述殼進(jìn)程的輸入流和輸出流。
上述可知,本發(fā)明實(shí)施例中的容器訪問系統(tǒng),通過根據(jù)客戶端的登錄請求進(jìn)行驗(yàn)證,并在驗(yàn)證通過時根據(jù)客戶端的請求在相應(yīng)的目標(biāo)容器上啟動殼進(jìn)程,通過殼進(jìn)程實(shí)現(xiàn)與客戶端的數(shù)據(jù)交換,由于登錄服務(wù)器與容器引擎之間采用websocket協(xié)議,可以實(shí)現(xiàn)雙工通信,因此從客戶端側(cè)來看,可以達(dá)到模擬ssh協(xié)議登錄的目的,從而無需在容器上運(yùn)行相關(guān)sshd進(jìn)程,也無需為單獨(dú)的容器配置用戶名、密碼以及網(wǎng)絡(luò)訪問路徑,可以實(shí)現(xiàn)從客戶端訪問任意的容器,避免了繁瑣的配置過程,節(jié)省了服務(wù)器資源,提高了配置效率。
需要說明的是,對于前述的各方法實(shí)施例,為了簡單描述,故將其都表述為一系列的動作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動作順序的限制,因?yàn)楦鶕?jù)本發(fā)明,某些步驟可以采用其他順序或者同時進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說明書中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動作和模塊并不一定是本發(fā)明所必須的。
在上述實(shí)施例中,對各個實(shí)施例的描述都各有側(cè)重,某個實(shí)施例中沒有詳述的部分,可以參見其他實(shí)施例的相關(guān)描述。
本發(fā)明實(shí)施例方法中的步驟可以根據(jù)實(shí)際需要進(jìn)行順序調(diào)整、合并和刪減。
本發(fā)明實(shí)施例裝置中的模塊、單元可以根據(jù)實(shí)際需要進(jìn)行合并、劃分和刪減。本領(lǐng)域的技術(shù)人員可以將本說明書中描述的不同實(shí)施例以及不同實(shí)施例的特征進(jìn)行結(jié)合或組合。
通過以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以用硬件實(shí)現(xiàn),或固件實(shí)現(xiàn),或它們的組合方式來實(shí)現(xiàn)。當(dāng)使用軟件實(shí)現(xiàn)時,可以將上述功能存儲在計(jì)算機(jī)可讀介質(zhì)中或作為計(jì)算機(jī)可讀介質(zhì)上的一個或多個指令或代碼進(jìn)行傳輸。計(jì)算機(jī)可讀介質(zhì)包括計(jì)算機(jī)存儲介質(zhì)和通信介質(zhì),其中通信介質(zhì)包括便于從一個地方向另一個地方傳送計(jì)算機(jī)程序的任何介質(zhì)。存儲介質(zhì)可以是計(jì)算機(jī)能夠存取的任何可用介質(zhì)。以此為例但不限于:計(jì)算機(jī)可讀介質(zhì)可以包括隨機(jī)存取存儲器(Random Access Memory,RAM)、只讀存儲器(Read-Only Memory,ROM)、電可擦可編程只讀存儲器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、只讀光盤(Compact Disc Read-Only Memory,CD-ROM)或其他光盤存儲、磁盤存儲介質(zhì)或者其他磁存儲設(shè)備、或者能夠用于攜帶或存儲具有指令或數(shù)據(jù)結(jié)構(gòu)形式的期望的程序代碼并能夠由計(jì)算機(jī)存取的任何其他介質(zhì)。此外。任何連接可以適當(dāng)?shù)某蔀橛?jì)算機(jī)可讀介質(zhì)。例如,如果軟件是使用同軸電纜、光纖光纜、雙絞線、數(shù)字用戶線(Digital SubscriberLine,DSL)或者諸如紅外線、無線電和微波之類的無線技術(shù)從網(wǎng)站、服務(wù)器或者其他遠(yuǎn)程源傳輸?shù)模敲赐S電纜、光纖光纜、雙絞線、DSL或者諸如紅外線、無線和微波之類的無線技術(shù)包括在所屬介質(zhì)的定影中。如本發(fā)明所使用的,盤(Disk)和碟(disc)包括壓縮光碟(CD)、激光碟、光碟、數(shù)字通用光碟(DVD)、軟盤和藍(lán)光光碟,其中盤通常磁性的復(fù)制數(shù)據(jù),而碟則用激光來光學(xué)的復(fù)制數(shù)據(jù)。上面的組合也應(yīng)當(dāng)包括在計(jì)算機(jī)可讀介質(zhì)的保護(hù)范圍之內(nèi)。
總之,以上所述僅為本發(fā)明技術(shù)方案的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。