精品国产一级在线观看,国产成人综合久久精品亚洲,免费一级欧美大片在线观看

當(dāng)前位置:云計(jì)算技術(shù)專區(qū) → 正文

專家觀點(diǎn):Docker 架構(gòu)優(yōu)缺點(diǎn)大剖析

責(zé)任編輯:editor007 |來(lái)源:企業(yè)網(wǎng)D1Net  2016-01-27 14:28:45 本文摘自: ithome

在Docker問(wèn)世后,其打包應(yīng)用程式、快速部署的能耐,受到開(kāi)發(fā)者的廣大歡迎。在2015年,Docker進(jìn)一步推出私有儲(chǔ)存庫(kù)功能Docker Registry,以及原生網(wǎng)路功能Docker Networking,讓企業(yè)更容易自行架構(gòu)Docker叢集。這些都讓Docker逐漸成為正式環(huán)境的新選擇。

在Docker受到一片好評(píng)下,著有《Docker源碼分析》,大受到中國(guó)Docker社群好評(píng)的孫宏亮認(rèn)為,Docker至少有3大缺點(diǎn),還無(wú)法滿足各種環(huán)境的需求。深入研究Docker原始碼的他,也是中國(guó)Docker PaaS服務(wù)商DaoCloud參與第一線開(kāi)發(fā)的軟體工程師。

別于多數(shù)Docker開(kāi)發(fā)者從應(yīng)用程式面切入談?wù)揇ocker的角度,孫宏亮在2015 Container Summit上,則是選擇從Docker的程式碼設(shè)計(jì)架構(gòu),來(lái)剖析優(yōu)缺點(diǎn)。

孫宏亮也指出,Container技術(shù)雖然已經(jīng)發(fā)展許久,但是透過(guò)Docker獨(dú)特的映像檔設(shè)計(jì),才使Container技術(shù)在近年發(fā)揚(yáng)光大。

獨(dú)特映像檔設(shè)計(jì)讓Docker爆紅

Container技術(shù)最早可以追溯至1979年時(shí)推出的Unix V7,其中的chroot系統(tǒng)呼叫指令,透過(guò)更改程序的根目錄,達(dá)到系統(tǒng)程序隔離的效果。而發(fā)展已經(jīng)超過(guò)30年的Container技術(shù),為何遲至2013年才因?yàn)镈ocker橫掃全球IT業(yè)界,孫宏亮解釋,因?yàn)镈ocker映像檔的設(shè)計(jì),使得Docker得以打破過(guò)去「程式碼即應(yīng)用」的觀念。

傳統(tǒng)上認(rèn)為,軟體開(kāi)發(fā)結(jié)束后,所產(chǎn)出的成果即是程式碼,或是能夠編譯執(zhí)行的二元執(zhí)行檔。

而為了讓這些程式碼可以順利執(zhí)行,開(kāi)發(fā)團(tuán)隊(duì)也得準(zhǔn)備完整的部署文件,讓維運(yùn)團(tuán)隊(duì)得以部署應(yīng)用程式,不過(guò),即便如此,仍然常常發(fā)生部署失敗的狀況。孫宏亮表示,Docker透過(guò)映像檔,將作業(yè)系統(tǒng)核心外,運(yùn)作應(yīng)用程式所需要的系統(tǒng)環(huán)境,由下而上打包,達(dá)到應(yīng)用程式跨平臺(tái)間的無(wú)縫接軌運(yùn)作。

而微軟已經(jīng)宣布,將在下一代的Windows Server 2016中內(nèi)建Docker Engine,使得Windows Sever可以原生支援Docker。但孫宏亮也解釋,目前Windows對(duì)Docker的支援,多數(shù)還是在API層。除了Windows作業(yè)系統(tǒng)與Linux在Kernel層差異很大外,Windows也有發(fā)展有自家的Container技術(shù)。

Docker映像檔的設(shè)計(jì),使得Docker得以打破過(guò)去「程式碼即應(yīng)用」的觀念。透過(guò)映像檔,將作業(yè)系統(tǒng)核心除外,運(yùn)作應(yīng)用程式所需要的系統(tǒng)環(huán)境,由下而上打包,達(dá)到應(yīng)用程式跨平臺(tái)間的無(wú)縫接軌運(yùn)作。(圖片來(lái)源/孫宏亮)

系統(tǒng)服務(wù)Docker化的障礙

雖然Docker透過(guò)了映像檔設(shè)計(jì),解決傳統(tǒng)維運(yùn)團(tuán)隊(duì)在部署上的問(wèn)題。但是,在將系統(tǒng)服務(wù)Docker化、應(yīng)用程式Docker化時(shí),使用者仍然會(huì)碰到實(shí)際面的問(wèn)題。

孫宏亮表示,當(dāng)應(yīng)用程式必須調(diào)度系統(tǒng)的服務(wù),例如利用cron服務(wù),將工作設(shè)定為自動(dòng)化執(zhí)行,或是執(zhí)行syslog服務(wù)收集系統(tǒng)日志時(shí),此時(shí)開(kāi)發(fā)者就會(huì)碰到使用Docker的障礙。

例如,雖然可以使用Docker將cron服務(wù)打包,但是Docker化的cron服務(wù),與傳統(tǒng)Linux中cron服務(wù)間有很大的區(qū)別。孫宏亮表示,一旦將cron服務(wù)容器化后,原始的環(huán)境變數(shù)設(shè)定都會(huì)失效。所以使用者必須分析軟體、Container的運(yùn)行方式,才能滿足使用的需求。另外,Docker與Linux Kernel的溝通能力薄弱,行程間溝通(inter-process communication,IPC)會(huì)被進(jìn)行隔離。像是NFS伺服器接受客戶端提出的請(qǐng)求后,會(huì)將需求再次傳遞給Linux Kernel,「使用者將這些功能容器化前,都必須再三考慮。」他表示。

并非任何應(yīng)用程式都適合Docker化

而在應(yīng)用程式Docker化的方面,雖然Docker的快速部署特性很吸引人,但是未必所有的應(yīng)用程式都適合Docker化,像是MySQL,孫宏亮認(rèn)為如果將其Docker化則存在一些弊端。例如,當(dāng)使用者的資料需要進(jìn)行額外備份,需要?jiǎng)?chuàng)造MySQL的資料庫(kù)Container,可以透過(guò)Docker run指令,創(chuàng)建一個(gè)MySQL的Database Container,或是使用docker run指令,修改MySQL的環(huán)境變數(shù)。而這些環(huán)境變數(shù)會(huì)透過(guò)Docker Daemon、Docker Engine,用json的檔桉格式儲(chǔ)存在Docker Container中。

存在于Docker Container中的環(huán)境變數(shù),對(duì)于Docker Engine并沒(méi)有意義,但是對(duì)于使用Docker的用戶則存在隱憂,如果被無(wú)關(guān)的第三方看見(jiàn),使用者的Container可能會(huì)產(chǎn)生資安上疑慮。所以,孫宏亮認(rèn)為,傳統(tǒng)開(kāi)發(fā)者在使用MySQL的思維,并不能無(wú)縫轉(zhuǎn)移到Docker的世界中運(yùn)作。

孫宏亮表示,在Docker問(wèn)世后,Docker官方也宣稱Docker的設(shè)計(jì)是以應(yīng)用程式為中心(application-centric),希望使用者將心力集中在開(kāi)發(fā)應(yīng)用程式,而Docker官方也不特別鼓勵(lì)使用者,將Docker視為取代VM,作為新一代運(yùn)算單元的想法。他認(rèn)為,當(dāng)Docker用于打包網(wǎng)頁(yè)應(yīng)用程式,或是比較單純的系統(tǒng)服務(wù),可以達(dá)到很好的Docker化效果。不過(guò),如果要將Docker的使用范圍擴(kuò)大,開(kāi)始涉及到作業(yè)系統(tǒng)的基礎(chǔ)運(yùn)行層次,或是分散式系統(tǒng)在推動(dòng)微服務(wù)時(shí),使用Docker會(huì)產(chǎn)生一些問(wèn)題。

共用Linux Kernel,讓Docker安全性先天不足

而從技術(shù)面的角度切入,孫宏亮表示,Docker就是分配硬體資源、實(shí)現(xiàn)資源隔離的Container技術(shù)。而談到資源隔離,他表示,一般人會(huì)聯(lián)想到Container技術(shù)中最基本的觀念,像是命名區(qū)域namespace及cgroup等技術(shù)。而Docker Container技術(shù)的火紅,以前無(wú)法透過(guò)VM執(zhí)行的功能,現(xiàn)在也可以透過(guò)Container實(shí)現(xiàn)。許多使用者因此也開(kāi)始議論,是否可以利用Container技術(shù)取代VM。

一般的實(shí)體伺服器,只要具備Linux Kernel就可以運(yùn)行Container,或是透過(guò)Hypervisor層,使用Linux Kernel上運(yùn)作的虛擬機(jī),運(yùn)行Container。孫宏亮認(rèn)為,以這樣的角度看待,Linux Kernel是運(yùn)作Container,所需滿足的最重要條件,而無(wú)論是實(shí)體伺服器或是VM,都能達(dá)到上述的條件。不過(guò),Container在實(shí)體機(jī)上運(yùn)作,可以達(dá)到媲美裸機(jī)的效能,而在VM中運(yùn)作時(shí),則會(huì)產(chǎn)生效能折損。

而談到Container的資源隔離,孫宏亮表示,一般使用者最直覺(jué)想到的不外乎是CPU、記憶體以及IO等運(yùn)算資源。而他認(rèn)為,「資源」的范疇?wèi)?yīng)該不只如此。雖然Container可以透過(guò)cgroup、namespace做到運(yùn)算資源的隔離,但是,「如果沒(méi)有Linux Kernel,使用者也不可能運(yùn)作Container。」他表示,如果將Linux Kernel也納入資源的范疇,因?yàn)镃ontainer與作業(yè)系統(tǒng)同時(shí)共用Kernel,所以其實(shí)并沒(méi)有實(shí)現(xiàn)資源隔離。但是,VM與VM之間,并不會(huì)共用作業(yè)系統(tǒng)核心。因此,VM的資源隔離性一定會(huì)比Container來(lái)得更好。

雖然Docker Container也會(huì)受到資源的隔離、控制,以及權(quán)限控制,但是由于跟Linux共用作業(yè)系統(tǒng)核心,進(jìn)而會(huì)產(chǎn)生安全上的漏洞。為了解決這樣的問(wèn)題,孫宏亮表示,可以透過(guò)Linux的capability機(jī)制,加強(qiáng)權(quán)限的控管,使Container內(nèi)部的root跟外部的root權(quán)限產(chǎn)生差異外,同時(shí)也讓Container在系統(tǒng)管理的能力,與宿主主機(jī)進(jìn)行區(qū)隔,藉此解決Container的安全問(wèn)題。

在去年推出的Docker 1.9.0當(dāng)中,Docker也加入了username space機(jī)制,孫宏亮表示,在安全性方面,這是Docker所達(dá)成的一個(gè)里程碑。只要透過(guò)namespace,讓Container運(yùn)作的時(shí)候,使用者可以擁有更多權(quán)限,同時(shí)也不會(huì)影響到宿主主機(jī)。

關(guān)鍵字:cronnamespace維運(yùn)

本文摘自: ithome

x 專家觀點(diǎn):Docker 架構(gòu)優(yōu)缺點(diǎn)大剖析 掃一掃
分享本文到朋友圈
當(dāng)前位置:云計(jì)算技術(shù)專區(qū) → 正文

專家觀點(diǎn):Docker 架構(gòu)優(yōu)缺點(diǎn)大剖析

責(zé)任編輯:editor007 |來(lái)源:企業(yè)網(wǎng)D1Net  2016-01-27 14:28:45 本文摘自: ithome

在Docker問(wèn)世后,其打包應(yīng)用程式、快速部署的能耐,受到開(kāi)發(fā)者的廣大歡迎。在2015年,Docker進(jìn)一步推出私有儲(chǔ)存庫(kù)功能Docker Registry,以及原生網(wǎng)路功能Docker Networking,讓企業(yè)更容易自行架構(gòu)Docker叢集。這些都讓Docker逐漸成為正式環(huán)境的新選擇。

在Docker受到一片好評(píng)下,著有《Docker源碼分析》,大受到中國(guó)Docker社群好評(píng)的孫宏亮認(rèn)為,Docker至少有3大缺點(diǎn),還無(wú)法滿足各種環(huán)境的需求。深入研究Docker原始碼的他,也是中國(guó)Docker PaaS服務(wù)商DaoCloud參與第一線開(kāi)發(fā)的軟體工程師。

別于多數(shù)Docker開(kāi)發(fā)者從應(yīng)用程式面切入談?wù)揇ocker的角度,孫宏亮在2015 Container Summit上,則是選擇從Docker的程式碼設(shè)計(jì)架構(gòu),來(lái)剖析優(yōu)缺點(diǎn)。

孫宏亮也指出,Container技術(shù)雖然已經(jīng)發(fā)展許久,但是透過(guò)Docker獨(dú)特的映像檔設(shè)計(jì),才使Container技術(shù)在近年發(fā)揚(yáng)光大。

獨(dú)特映像檔設(shè)計(jì)讓Docker爆紅

Container技術(shù)最早可以追溯至1979年時(shí)推出的Unix V7,其中的chroot系統(tǒng)呼叫指令,透過(guò)更改程序的根目錄,達(dá)到系統(tǒng)程序隔離的效果。而發(fā)展已經(jīng)超過(guò)30年的Container技術(shù),為何遲至2013年才因?yàn)镈ocker橫掃全球IT業(yè)界,孫宏亮解釋,因?yàn)镈ocker映像檔的設(shè)計(jì),使得Docker得以打破過(guò)去「程式碼即應(yīng)用」的觀念。

傳統(tǒng)上認(rèn)為,軟體開(kāi)發(fā)結(jié)束后,所產(chǎn)出的成果即是程式碼,或是能夠編譯執(zhí)行的二元執(zhí)行檔。

而為了讓這些程式碼可以順利執(zhí)行,開(kāi)發(fā)團(tuán)隊(duì)也得準(zhǔn)備完整的部署文件,讓維運(yùn)團(tuán)隊(duì)得以部署應(yīng)用程式,不過(guò),即便如此,仍然常常發(fā)生部署失敗的狀況。孫宏亮表示,Docker透過(guò)映像檔,將作業(yè)系統(tǒng)核心外,運(yùn)作應(yīng)用程式所需要的系統(tǒng)環(huán)境,由下而上打包,達(dá)到應(yīng)用程式跨平臺(tái)間的無(wú)縫接軌運(yùn)作。

而微軟已經(jīng)宣布,將在下一代的Windows Server 2016中內(nèi)建Docker Engine,使得Windows Sever可以原生支援Docker。但孫宏亮也解釋,目前Windows對(duì)Docker的支援,多數(shù)還是在API層。除了Windows作業(yè)系統(tǒng)與Linux在Kernel層差異很大外,Windows也有發(fā)展有自家的Container技術(shù)。

Docker映像檔的設(shè)計(jì),使得Docker得以打破過(guò)去「程式碼即應(yīng)用」的觀念。透過(guò)映像檔,將作業(yè)系統(tǒng)核心除外,運(yùn)作應(yīng)用程式所需要的系統(tǒng)環(huán)境,由下而上打包,達(dá)到應(yīng)用程式跨平臺(tái)間的無(wú)縫接軌運(yùn)作。(圖片來(lái)源/孫宏亮)

系統(tǒng)服務(wù)Docker化的障礙

雖然Docker透過(guò)了映像檔設(shè)計(jì),解決傳統(tǒng)維運(yùn)團(tuán)隊(duì)在部署上的問(wèn)題。但是,在將系統(tǒng)服務(wù)Docker化、應(yīng)用程式Docker化時(shí),使用者仍然會(huì)碰到實(shí)際面的問(wèn)題。

孫宏亮表示,當(dāng)應(yīng)用程式必須調(diào)度系統(tǒng)的服務(wù),例如利用cron服務(wù),將工作設(shè)定為自動(dòng)化執(zhí)行,或是執(zhí)行syslog服務(wù)收集系統(tǒng)日志時(shí),此時(shí)開(kāi)發(fā)者就會(huì)碰到使用Docker的障礙。

例如,雖然可以使用Docker將cron服務(wù)打包,但是Docker化的cron服務(wù),與傳統(tǒng)Linux中cron服務(wù)間有很大的區(qū)別。孫宏亮表示,一旦將cron服務(wù)容器化后,原始的環(huán)境變數(shù)設(shè)定都會(huì)失效。所以使用者必須分析軟體、Container的運(yùn)行方式,才能滿足使用的需求。另外,Docker與Linux Kernel的溝通能力薄弱,行程間溝通(inter-process communication,IPC)會(huì)被進(jìn)行隔離。像是NFS伺服器接受客戶端提出的請(qǐng)求后,會(huì)將需求再次傳遞給Linux Kernel,「使用者將這些功能容器化前,都必須再三考慮。」他表示。

并非任何應(yīng)用程式都適合Docker化

而在應(yīng)用程式Docker化的方面,雖然Docker的快速部署特性很吸引人,但是未必所有的應(yīng)用程式都適合Docker化,像是MySQL,孫宏亮認(rèn)為如果將其Docker化則存在一些弊端。例如,當(dāng)使用者的資料需要進(jìn)行額外備份,需要?jiǎng)?chuàng)造MySQL的資料庫(kù)Container,可以透過(guò)Docker run指令,創(chuàng)建一個(gè)MySQL的Database Container,或是使用docker run指令,修改MySQL的環(huán)境變數(shù)。而這些環(huán)境變數(shù)會(huì)透過(guò)Docker Daemon、Docker Engine,用json的檔桉格式儲(chǔ)存在Docker Container中。

存在于Docker Container中的環(huán)境變數(shù),對(duì)于Docker Engine并沒(méi)有意義,但是對(duì)于使用Docker的用戶則存在隱憂,如果被無(wú)關(guān)的第三方看見(jiàn),使用者的Container可能會(huì)產(chǎn)生資安上疑慮。所以,孫宏亮認(rèn)為,傳統(tǒng)開(kāi)發(fā)者在使用MySQL的思維,并不能無(wú)縫轉(zhuǎn)移到Docker的世界中運(yùn)作。

孫宏亮表示,在Docker問(wèn)世后,Docker官方也宣稱Docker的設(shè)計(jì)是以應(yīng)用程式為中心(application-centric),希望使用者將心力集中在開(kāi)發(fā)應(yīng)用程式,而Docker官方也不特別鼓勵(lì)使用者,將Docker視為取代VM,作為新一代運(yùn)算單元的想法。他認(rèn)為,當(dāng)Docker用于打包網(wǎng)頁(yè)應(yīng)用程式,或是比較單純的系統(tǒng)服務(wù),可以達(dá)到很好的Docker化效果。不過(guò),如果要將Docker的使用范圍擴(kuò)大,開(kāi)始涉及到作業(yè)系統(tǒng)的基礎(chǔ)運(yùn)行層次,或是分散式系統(tǒng)在推動(dòng)微服務(wù)時(shí),使用Docker會(huì)產(chǎn)生一些問(wèn)題。

共用Linux Kernel,讓Docker安全性先天不足

而從技術(shù)面的角度切入,孫宏亮表示,Docker就是分配硬體資源、實(shí)現(xiàn)資源隔離的Container技術(shù)。而談到資源隔離,他表示,一般人會(huì)聯(lián)想到Container技術(shù)中最基本的觀念,像是命名區(qū)域namespace及cgroup等技術(shù)。而Docker Container技術(shù)的火紅,以前無(wú)法透過(guò)VM執(zhí)行的功能,現(xiàn)在也可以透過(guò)Container實(shí)現(xiàn)。許多使用者因此也開(kāi)始議論,是否可以利用Container技術(shù)取代VM。

一般的實(shí)體伺服器,只要具備Linux Kernel就可以運(yùn)行Container,或是透過(guò)Hypervisor層,使用Linux Kernel上運(yùn)作的虛擬機(jī),運(yùn)行Container。孫宏亮認(rèn)為,以這樣的角度看待,Linux Kernel是運(yùn)作Container,所需滿足的最重要條件,而無(wú)論是實(shí)體伺服器或是VM,都能達(dá)到上述的條件。不過(guò),Container在實(shí)體機(jī)上運(yùn)作,可以達(dá)到媲美裸機(jī)的效能,而在VM中運(yùn)作時(shí),則會(huì)產(chǎn)生效能折損。

而談到Container的資源隔離,孫宏亮表示,一般使用者最直覺(jué)想到的不外乎是CPU、記憶體以及IO等運(yùn)算資源。而他認(rèn)為,「資源」的范疇?wèi)?yīng)該不只如此。雖然Container可以透過(guò)cgroup、namespace做到運(yùn)算資源的隔離,但是,「如果沒(méi)有Linux Kernel,使用者也不可能運(yùn)作Container。」他表示,如果將Linux Kernel也納入資源的范疇,因?yàn)镃ontainer與作業(yè)系統(tǒng)同時(shí)共用Kernel,所以其實(shí)并沒(méi)有實(shí)現(xiàn)資源隔離。但是,VM與VM之間,并不會(huì)共用作業(yè)系統(tǒng)核心。因此,VM的資源隔離性一定會(huì)比Container來(lái)得更好。

雖然Docker Container也會(huì)受到資源的隔離、控制,以及權(quán)限控制,但是由于跟Linux共用作業(yè)系統(tǒng)核心,進(jìn)而會(huì)產(chǎn)生安全上的漏洞。為了解決這樣的問(wèn)題,孫宏亮表示,可以透過(guò)Linux的capability機(jī)制,加強(qiáng)權(quán)限的控管,使Container內(nèi)部的root跟外部的root權(quán)限產(chǎn)生差異外,同時(shí)也讓Container在系統(tǒng)管理的能力,與宿主主機(jī)進(jìn)行區(qū)隔,藉此解決Container的安全問(wèn)題。

在去年推出的Docker 1.9.0當(dāng)中,Docker也加入了username space機(jī)制,孫宏亮表示,在安全性方面,這是Docker所達(dá)成的一個(gè)里程碑。只要透過(guò)namespace,讓Container運(yùn)作的時(shí)候,使用者可以擁有更多權(quán)限,同時(shí)也不會(huì)影響到宿主主機(jī)。

關(guān)鍵字:cronnamespace維運(yùn)

本文摘自: ithome

電子周刊
回到頂部

關(guān)于我們聯(lián)系我們版權(quán)聲明隱私條款廣告服務(wù)友情鏈接投稿中心招賢納士

企業(yè)網(wǎng)版權(quán)所有 ©2010-2024 京ICP備09108050號(hào)-6 京公網(wǎng)安備 11010502049343號(hào)

^
  • <menuitem id="jw4sk"></menuitem>

    1. <form id="jw4sk"><tbody id="jw4sk"><dfn id="jw4sk"></dfn></tbody></form>
      主站蜘蛛池模板: 关岭| 开平市| 巴林右旗| 华坪县| 青龙| 花垣县| 峨山| 沙湾县| 永济市| 拜泉县| 阜平县| 宁陕县| 从江县| 石台县| 大同市| 边坝县| 黑河市| 兴安县| 徐水县| 博兴县| 镇雄县| 城固县| 新乐市| 安义县| 巧家县| 台中市| 宁武县| 盖州市| 枣强县| 东辽县| 密云县| 乌鲁木齐县| 西乌珠穆沁旗| 安徽省| 镇原县| 句容市| 双牌县| 壶关县| 德兴市| 新密市| 临沂市|