成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

并存共生or相愛(ài)相殺?容器、虛擬機(jī)與Docker概念全解析

aboutU / 3449人閱讀

摘要:本文立足于新手,從容器和虛擬機(jī)兩個(gè)大的概念入手,由淺入深,由宏轉(zhuǎn)微,為我們解析了的方方面面。出于各種考量與需求,容器在外觀(guān)上與虛擬機(jī)非常相似。大家可以在數(shù)秒鐘內(nèi)完成容器的創(chuàng)建與運(yùn)行,而虛擬機(jī)則由于需要引導(dǎo)完整的虛擬操作系統(tǒng)而耗費(fèi)更多時(shí)間。

當(dāng)小數(shù)看到這篇文章時(shí)內(nèi)心是激動(dòng)的,因?yàn)榛蛟S介紹Docker容器的文章有無(wú)數(shù),但是如此清晰易懂、對(duì)小白如此友好的卻不多見(jiàn)。本文立足于新手,從容器和虛擬機(jī)兩個(gè)大的概念入手,由淺入深,由宏轉(zhuǎn)微,為我們解析了Docker的方方面面。來(lái)吧朋友們,理解它,熱愛(ài)它,然后更好地使用它。

作為程序員或者技術(shù)人員,大家肯定聽(tīng)說(shuō)過(guò)Docker的鼎鼎大名——這款工具能夠幫助我們高效打包、發(fā)布及運(yùn)行承載著應(yīng)用程序的“容器”系統(tǒng)。其發(fā)展如火如荼——從開(kāi)發(fā)者到運(yùn)維人員,每個(gè)人都在關(guān)注著這位技術(shù)新貴。即使是像谷歌、VMware與Amazon這樣的技術(shù)巨擘也在構(gòu)建相關(guān)服務(wù)為其提供支持。

無(wú)論大家是否有意立即使用Docker,我們都應(yīng)當(dāng)對(duì)其基礎(chǔ)概念加以了解,并明確區(qū)分容器與虛擬機(jī)之間的差異所在。目前網(wǎng)絡(luò)上已經(jīng)存在大量對(duì)二者關(guān)聯(lián)與區(qū)別的闡述性文章,不過(guò)在今天的綜述中,我們將立足于新手對(duì)其加以剖析。

下面首先聊聊虛擬機(jī)與容器究竟是什么。

容器與虛擬機(jī)究竟是什么?

容器與虛擬機(jī)擁有著類(lèi)似的使命:對(duì)應(yīng)用程序及其關(guān)聯(lián)性進(jìn)行隔離,從而構(gòu)建起一套能夠隨處運(yùn)行的自容納單元。

此外,容器與虛擬機(jī)還擺脫了對(duì)物理硬件的需求,允許我們更為高效地使用計(jì)算資源,從而提升能源效率與成本效益。

容器與虛擬機(jī)之間的核心差異在于其架構(gòu)方法。下面一起進(jìn)行深入了解。

虛擬機(jī)

虛擬機(jī)在本質(zhì)上就是在模擬一臺(tái)真實(shí)的計(jì)算機(jī)設(shè)備,同時(shí)遵循同樣的程序執(zhí)行方式。虛擬機(jī)能夠利用“虛擬機(jī)管理程序”運(yùn)行在物理設(shè)備之上。反過(guò)來(lái),虛擬機(jī)管理程序則可運(yùn)行在主機(jī)設(shè)備或者“裸機(jī)”之上。

下面用更直白的表達(dá)來(lái)說(shuō)明:

虛擬機(jī)管理程序可表現(xiàn)為軟件、固件或者硬件,并作為虛擬機(jī)的運(yùn)行基礎(chǔ)。虛擬機(jī)管理程序本身運(yùn)行在物理計(jì)算機(jī)之上,我們也將這種底層硬件稱(chēng)為“主機(jī)設(shè)備”。主機(jī)設(shè)備為虛擬機(jī)提供資源,包括內(nèi)存與CPU。這些資源由不同虛擬機(jī)共享,并根據(jù)需要進(jìn)行隨意分配。因此如果一套虛擬機(jī)運(yùn)行有需求大量資源的高強(qiáng)度應(yīng)用程序,那么我們可以在同一主機(jī)設(shè)備上為其分配遠(yuǎn)高于其它虛擬機(jī)的資源配額。

運(yùn)行在主機(jī)設(shè)備上的虛擬機(jī)(當(dāng)然,需要配合虛擬機(jī)管理程序)通常被稱(chēng)為一套“客戶(hù)機(jī)”。這套客戶(hù)機(jī)容納有應(yīng)用程序及其運(yùn)行所必需的各類(lèi)組件(例如系統(tǒng)二進(jìn)制文件及庫(kù))。它同時(shí)還包含有完整的虛擬硬件堆棧,其中包括虛擬網(wǎng)絡(luò)適配器、存儲(chǔ)以及CPU——這意味著它也擁有自己的完整訪(fǎng)客操作系統(tǒng)。著眼于內(nèi)部,這套客戶(hù)機(jī)自成體系并擁有專(zhuān)用資源。而從外部來(lái)看,這套虛擬機(jī)使用的則是由主機(jī)設(shè)備提供的共享資源。

如上所述,客戶(hù)機(jī)可以運(yùn)行主機(jī)虛擬機(jī)管理程序或者裸機(jī)虛擬機(jī)管理程序。二者之間存在著多種重要區(qū)別。

首先,主機(jī)虛擬機(jī)管理程序運(yùn)行在主機(jī)設(shè)備的操作系統(tǒng)之上。舉例來(lái)說(shuō),一臺(tái)運(yùn)行有OS X的計(jì)算機(jī)可以在操作系統(tǒng)之上安裝虛擬機(jī)(例如VirtualBox或者VMware Workstation 8)。該虛擬機(jī)并不會(huì)直接訪(fǎng)問(wèn)硬件,因此其需要經(jīng)由主機(jī)操作系統(tǒng)(也就是Mac OS X)實(shí)現(xiàn)資源獲取。

主機(jī)虛擬機(jī)管理程序的優(yōu)勢(shì)在于,其基本擺脫了對(duì)底層硬件的要求。該主機(jī)操作系統(tǒng)負(fù)責(zé)提供硬件驅(qū)動(dòng)程序,而非由虛擬機(jī)管理程序自身提供,因此我們認(rèn)為其具備更理想的“硬件兼容性”。在另一方面,這種介于硬件與虛擬機(jī)管理程序之間的額外層會(huì)帶來(lái)更多資源消耗,進(jìn)而降低虛擬機(jī)性能表現(xiàn)。

裸機(jī)虛擬機(jī)管理程序則將虛擬機(jī)直接安裝并運(yùn)行在主機(jī)設(shè)備硬件之上以改善性能表現(xiàn)。由于其直接接入底層硬件,因此我們不再需要主機(jī)操作系統(tǒng)作為輔助。在這種情況下,我們可以直接在硬件上安裝虛擬機(jī)管理程序并將其作為操作系統(tǒng)。與主機(jī)虛擬機(jī)管理程序不同,裸機(jī)虛擬機(jī)管理程序擁有自己的設(shè)備驅(qū)動(dòng)程序及接口,從而直接支持各類(lèi)I/O、處理或者操作系統(tǒng)特定任務(wù)相關(guān)組件。這種方式能夠帶來(lái)更理想的性能水平、可擴(kuò)展性以及穩(wěn)定性。但代價(jià)是其硬件兼容性比較有限,因?yàn)樘摂M機(jī)管理程序只能包含一部分設(shè)備驅(qū)動(dòng)程序。

說(shuō)到這里,大家可能提出疑問(wèn):為什么我們非得在虛擬機(jī)與主機(jī)設(shè)備之間添加“虛擬機(jī)管理程序”呢?

這個(gè)嘛,因?yàn)樘摂M機(jī)本身?yè)碛幸惶滋摂M操作系統(tǒng),而虛擬機(jī)管理程序則負(fù)責(zé)為虛擬機(jī)提供平臺(tái)以管理并運(yùn)行這套訪(fǎng)客操作系統(tǒng)。如此一來(lái),主機(jī)計(jì)算機(jī)就能夠?yàn)檫\(yùn)行于其上的各虛擬機(jī)分配共享資源了。

虛擬機(jī)原理示意圖

如大家所見(jiàn),虛擬機(jī)會(huì)將虛擬硬件、內(nèi)核(即操作系統(tǒng))以及用戶(hù)空間打包在新虛擬機(jī)當(dāng)中。

容器

與提供硬件虛擬化機(jī)制的虛擬機(jī)不同,容器通過(guò)對(duì)“用戶(hù)空間”的抽象化處理提供操作系統(tǒng)層級(jí)的虛擬化機(jī)制。通過(guò)對(duì)容器進(jìn)行分解,大家將可以非常清晰地理解其中含義。

出于各種考量與需求,容器在外觀(guān)上與虛擬機(jī)非常相似。舉例來(lái)說(shuō),二者皆擁有專(zhuān)有處理空間、能夠作為root執(zhí)行命令、提供專(zhuān)有網(wǎng)絡(luò)接口與IP地址、允許定制化路由及iptable規(guī)則,且可啟動(dòng)文件系統(tǒng)等等。

容器與虛擬機(jī)間的最大區(qū)別在于,各容器系統(tǒng)共享主機(jī)系統(tǒng)的內(nèi)核。


容器原理示意圖

以上示意圖顯示了容器如何對(duì)用戶(hù)空間進(jìn)行打包,而不像虛擬機(jī)那樣同樣對(duì)內(nèi)核或者虛擬硬件進(jìn)行打包。每套容器都擁有自己的隔離化用戶(hù)空間,從而使得多套容器能夠運(yùn)行在同一主機(jī)系統(tǒng)之上。我們可以看到全部操作系統(tǒng)層級(jí)的架構(gòu)都可實(shí)現(xiàn)跨容器共享。惟一需要獨(dú)立構(gòu)建的就是二進(jìn)制文件與庫(kù)。正因?yàn)槿绱耍萜鞑艙碛袠O為出色的輕量化特性。

Docker的功能定位

Docker為基于Linux容器的開(kāi)源項(xiàng)目,其利用Linux內(nèi)核中的各項(xiàng)功能——例如命名空間與控制組——以在操作系統(tǒng)之上創(chuàng)建容器。

容器概念并不是什么新鮮事物; 谷歌公司多年來(lái)一直在使用自己開(kāi)發(fā)的容器技術(shù)。其它Linux容器技術(shù)方案還包括Solaris Zones、BSD jails以及LXC,且其都已經(jīng)擁有多年的發(fā)展歷史。

那么為什么Docker的出現(xiàn)會(huì)快速吸引到技術(shù)業(yè)界的注意?

易用性: Docker能夠?yàn)闈撛谑鼙妿?lái)出色的易用性——開(kāi)發(fā)者、系統(tǒng)管理員以及架構(gòu)師等等——從而幫助其充分利用容器技術(shù)優(yōu)勢(shì)以快速構(gòu)建并測(cè)試可移植應(yīng)用程序。每個(gè)人都可以在自己的筆記本上打包應(yīng)用程序,并將其直接運(yùn)行在任何公有云、私有云甚至是裸機(jī)之上。其座右銘是:一次構(gòu)建,隨處運(yùn)行。

速度: Docker容器具備輕量化與高速特性。由于容器本身屬于運(yùn)行在內(nèi)核之上的沙箱環(huán)境,因?yàn)槠鋵?duì)資源的需求量極低。大家可以在數(shù)秒鐘內(nèi)完成容器的創(chuàng)建與運(yùn)行,而虛擬機(jī)則由于需要引導(dǎo)完整的虛擬操作系統(tǒng)而耗費(fèi)更多時(shí)間。

Docker Hub: Docker用戶(hù)還能夠享受由Docker Hub帶來(lái)的豐富生態(tài)系統(tǒng)支持,我們可以將其理解成“Docker鏡像的應(yīng)用商店”。Docker Hub提供成千上萬(wàn)由社區(qū)開(kāi)發(fā)的公共鏡像,且可立即加以使用。我們可以輕松根據(jù)需要搜索到合適的鏡像,將其提取并稍加修改即加以使用。

模塊性與可擴(kuò)展性: Docker允許我們輕松將應(yīng)用程序的功能拆分成多個(gè)獨(dú)立容器。舉例來(lái)說(shuō),我們可以將自己的Postgres數(shù)據(jù)庫(kù)運(yùn)行在一套容器當(dāng)中,并將Redis服務(wù)器運(yùn)行在另一容器內(nèi),而Node.js也擁有自己的容器系統(tǒng)。在Docker的幫助上,大家能夠輕松將這些容器對(duì)接起來(lái)以創(chuàng)建完整的應(yīng)用程序,這就讓未來(lái)的規(guī)模伸縮或者組件更新得以通過(guò)相互獨(dú)立的方式完成。

最后但同樣重要的是,Docker鯨魚(yú)實(shí)在是太惹人喜愛(ài)了~

Docker基本概念

現(xiàn)在我們對(duì)Docker有了宏觀(guān)印象,下面具體對(duì)其組件進(jìn)行解讀:

Docker Engine

Docker Engine屬于Docker的運(yùn)行層。這是一套輕量化運(yùn)行時(shí)及工具組合,負(fù)責(zé)管理容器、鏡像、構(gòu)建 等等。它以原生方式運(yùn)行在Linux系統(tǒng)之上,并由以下元素構(gòu)成:

Docker Daemon,運(yùn)行在主機(jī)計(jì)算機(jī)之上。
Docker Client,負(fù)責(zé)與Docker Daemon通信以執(zhí)行命令。
REST API,用于同Docker Daemon遠(yuǎn)程交互。

Docker Client

Docker Client正是我們作為最終用戶(hù)的通信對(duì)象。我們可以將其視為Docker的UI。

我們進(jìn)行的一切操作都將直接接入Docker Client,再由其將指令傳遞至Docker Daemon。

Docker Daemon

Docker Daemon直接將執(zhí)行命令發(fā)送至Docker Client——例如構(gòu)建、運(yùn)行以及分發(fā)等等。Docker Daemon運(yùn)行在主機(jī)設(shè)備之上,但作為用戶(hù),我們永遠(yuǎn)不會(huì)直接與該Daemon進(jìn)行通信。Docker Client也可以運(yùn)行在主機(jī)設(shè)備上,但并非必需。它亦能夠運(yùn)行在另一臺(tái)設(shè)備上,并與運(yùn)行在目標(biāo)主機(jī)上的Docker Daemon進(jìn)行遠(yuǎn)程通信。

Dockerfile

Dockerfile是我們編寫(xiě)指令以構(gòu)建Docker鏡像的載體。這些指令包括:
RUN apt-get y install some-package:安裝某軟件包
EXPOSE 8000: 開(kāi)放端口
ENV ANT_HOME /usr/local/apache-ant:傳遞環(huán)境變量

類(lèi)似的指令還有很多。一旦設(shè)置了Dockerfile,大家就可以利用docker build命令來(lái)構(gòu)建鏡像了。下面來(lái)看Dockerfile示例:


示例Dockerfile

Docker鏡像

鏡像屬于只讀模板,大家可以借此配合Dockerfile中的編寫(xiě)指令集進(jìn)行容器構(gòu)建。鏡像定義了打包的應(yīng)用程序以及其相關(guān)依賴(lài)。這些依賴(lài)就好像是其啟動(dòng)時(shí)需要運(yùn)行的進(jìn)程。

Docker鏡像利用Dockerfile實(shí)現(xiàn)構(gòu)建。Dockerfile中的每條指令都會(huì)在鏡像中添加一個(gè)新的“層”,這些層則表現(xiàn)為鏡像文件系統(tǒng)中的一個(gè)分區(qū)——我們可以對(duì)其進(jìn)行添加或者替換。層概念正是Docker輕量化的基礎(chǔ)。Docker利用一套Union File System建立起這套強(qiáng)大的結(jié)構(gòu):

Union File System

Docker利用Union File System以構(gòu)建鏡像。大家可以將Union File System視為一套可堆疊文件系統(tǒng),這意味著各文件系統(tǒng)中的文件與目錄(在Docker中被稱(chēng)為分支)可以透明方式覆蓋并構(gòu)成單一文件系統(tǒng)。

覆蓋分支內(nèi)的各目錄內(nèi)容擁有同樣的路徑,并將被視為單一合并目錄,這就避免了需要為每個(gè)層分別創(chuàng)建副本的麻煩。相反,這些目錄可調(diào)用特定指針以指向同樣的資源; 當(dāng)特定層需要進(jìn)行修改時(shí),其會(huì)分別創(chuàng)建修改前與修改后的本地副本。通過(guò)這種方式,文件系統(tǒng)表現(xiàn)出可寫(xiě)入特性,但其實(shí)際上并未接受任何寫(xiě)入操作。(換言之,這是一套‘寫(xiě)入即復(fù)制’系統(tǒng)。)

分層系統(tǒng)擁有兩大核心優(yōu)勢(shì):

無(wú)重復(fù)數(shù)據(jù): 分層機(jī)制使得我們?cè)谑褂苗R像創(chuàng)建并運(yùn)行新容器時(shí)無(wú)需復(fù)制完整的文件集,從而保證Docker容器實(shí)例擁有良好的運(yùn)行速度與低廉的資源成本。
層隔離: 變更操作速度很快——當(dāng)我們對(duì)鏡像進(jìn)行變更時(shí),Docker只需要對(duì)進(jìn)行了變更的層進(jìn)行廣播。

Volumes

Volumes屬于容器中的“數(shù)據(jù)”部分,會(huì)在容器創(chuàng)建時(shí)進(jìn)行初始化。Volumes機(jī)制允許我們持久保留并共享容器數(shù)據(jù)。數(shù)據(jù)卷 獨(dú)立于默認(rèn)Union File System之外,且作為普通目錄及文件存在于主機(jī)文件系統(tǒng)當(dāng)中。因此即使是在對(duì)容器進(jìn)行銷(xiāo)毀、更新或者重構(gòu)時(shí),數(shù)據(jù)卷仍然不受影響。當(dāng)我們需要對(duì)某一數(shù)據(jù)卷進(jìn)行更新時(shí),直接加以變更即可。(作為另一項(xiàng)優(yōu)勢(shì),數(shù)據(jù)卷還能夠在不同容器之間進(jìn)行共享與復(fù)用。)

Docker容器

如上所述,Docker容器將一款應(yīng)用程序的軟件打包在單一環(huán)境當(dāng)中,同時(shí)包含全部運(yùn)行必需的要素。其中包括操作系統(tǒng)、應(yīng)用程序代碼、運(yùn)行時(shí)、系統(tǒng)工具、系統(tǒng)庫(kù)等等。Docker容器由Docker鏡像構(gòu)建而成。由于鏡像存在只讀屬性,因此Docker會(huì)在鏡像在只讀文件系統(tǒng)之上添加一套讀取-寫(xiě)入文件系統(tǒng)以實(shí)現(xiàn)容器創(chuàng)建。


另外,在創(chuàng)建容器時(shí),Docker還會(huì)創(chuàng)建一套網(wǎng)絡(luò)接口以幫助容器同本地主機(jī)通信、對(duì)接可用IP地址并執(zhí)行用戶(hù)在定義鏡像時(shí)所執(zhí)行的進(jìn)程以運(yùn)行應(yīng)用程序。
在成功創(chuàng)建了一套容器之后,我們隨后可以將其運(yùn)行在任何環(huán)境當(dāng)中,而不必再做任何變更。

“容器”探秘

打開(kāi)容器,我們會(huì)發(fā)現(xiàn)其中包含大量活動(dòng)組件。容器的實(shí)現(xiàn)機(jī)制一直令我感到驚訝而好奇,特別是考慮到容器不存在任何抽象的基礎(chǔ)設(shè)施邊界。在閱讀了大量材料之后,我將結(jié)合自己的理解為大家進(jìn)行講解:)

“容器”這一術(shù)語(yǔ)其實(shí)只是個(gè)抽象概念,用于表述多種不同的相關(guān)特性,而其與原詞“container”的另一含義“集裝箱”有著千絲萬(wàn)縷的聯(lián)系。下面就來(lái)一起了解:

1) 命名空間

命名空間為容器提供對(duì)應(yīng)的底層Linux系統(tǒng)視圖,即限制容器的查看與訪(fǎng)問(wèn)范疇。當(dāng)我們運(yùn)行一套容器時(shí),Docker會(huì)創(chuàng)建多個(gè)命名空間供特定容器使用。
Docker會(huì)在內(nèi)核中使用多種不同類(lèi)型的命名空間,例如:

NET: 為容器提供獨(dú)特的系統(tǒng)網(wǎng)絡(luò)堆棧視圖(例如自有網(wǎng)絡(luò)設(shè)備、IP地址、IP路由表、/proc/net目錄、端口編號(hào)等等)。

PID: PID代表進(jìn)程ID。如果大家曾經(jīng)在命令行中運(yùn)行過(guò)ps aux以檢查當(dāng)前系統(tǒng)正在運(yùn)行的進(jìn)程,就會(huì)發(fā)現(xiàn)其中一欄名為“PID”。PID命名空間為容器提供其能夠查看與交互的進(jìn)程范圍,其中包括獨(dú)立的init(PID 1),其屬于“所有進(jìn)程的元祖”。

MNT: 為容器提供獨(dú)特的系統(tǒng)“mounts”視圖。這樣不同mount命名空間內(nèi)的進(jìn)程就將擁有彼此不同的文件系統(tǒng)結(jié)構(gòu)。

UTS: UTS代表UNIX分時(shí)系統(tǒng)。它允許某一進(jìn)程識(shí)別系統(tǒng)身份(例如主機(jī)名稱(chēng)或者域名等)。UTS允許容器擁有不同于其它容器以及主機(jī)系統(tǒng)的主機(jī)名稱(chēng)與NIS域名。

IPC: IPC代表進(jìn)程間通信。IPC命名空間負(fù)責(zé)對(duì)運(yùn)行在每套容器內(nèi)的進(jìn)程進(jìn)行IPC資源隔離。

USER: 此命名空間用于對(duì)每套容器內(nèi)的用戶(hù)進(jìn)行隔離。其允許各容器擁有不同的uid(即用戶(hù)ID)與gid(組ID)視圖區(qū)間,并將其與主機(jī)系統(tǒng)進(jìn)行比對(duì)。這樣一來(lái),某一進(jìn)程的uid與gid在用戶(hù)命名空間之內(nèi)與之外即有所不同,這也使得該進(jìn)程能夠在不影響容器內(nèi)root權(quán)限的情況下,撤銷(xiāo)同一用戶(hù)在容器外的權(quán)限。

Docker將這些命名空間結(jié)合起來(lái)以隔離并創(chuàng)建容器。下面要講的則是控制組。

2) 控制組

控制組(也被稱(chēng)為cgroups)屬于Linux內(nèi)核中的一項(xiàng)功能,用于對(duì)一組進(jìn)程的資源使用量(包括CPU、內(nèi)存、磁盤(pán)I/O以及網(wǎng)絡(luò)等)進(jìn)行隔離、排序與計(jì)數(shù)。這意味著cgroup能夠確保Docker容器只使用其必需的資源——并在必要情況下設(shè)置其所能使用的資源上限。另外,cgroups還能夠確保單一容器不至于占用太多資源并導(dǎo)致整體系統(tǒng)陷入癱瘓。

最后要說(shuō)明的是Union文件系統(tǒng):

3) 隔離化Union file system:

我們?cè)谥暗腄ocker鏡像章節(jié)中已經(jīng)解釋過(guò)了:)

這就是關(guān)于Docker容器的全部?jī)?nèi)容了(當(dāng)然,實(shí)現(xiàn)細(xì)節(jié)才是最麻煩的環(huán)節(jié)——例如如何管理不同組件間的交互)。

Docker的未來(lái):Docker與虛擬機(jī)將并生共存

盡管Docker已經(jīng)開(kāi)始逐步成為主流,但我認(rèn)為它不太可能對(duì)虛擬機(jī)造成真正的威脅。容器將繼續(xù)發(fā)展壯大,但虛擬機(jī)也仍然擁有適合自己的生存空間。

舉例來(lái)說(shuō),如果我們需要在多臺(tái)服務(wù)器上運(yùn)行多款應(yīng)用程序,那么最理想的辦法就是使用虛擬機(jī)。在另一方面,如果我們需要運(yùn)行同一應(yīng)用程序的多套副本,那么Docker則擁有更多具體優(yōu)勢(shì)。

另外,盡管容器允許我們將應(yīng)用程序拆分成多個(gè)功能組件,但這種分散化趨勢(shì)意味著我們需要管理更多功能部件,即帶來(lái)更為復(fù)雜的控制與協(xié)調(diào)任務(wù)。

安全同時(shí)也是Docker容器需要解決的一大難題——由于各容器共享同一套內(nèi)核,因此不同容器之間的屏障非常薄弱。與只需要調(diào)用主機(jī)虛擬機(jī)管理程序的虛擬機(jī)方案不同,Docker容器需要向主機(jī)內(nèi)核發(fā)出系統(tǒng)調(diào)用,而這會(huì)帶來(lái)更龐大的攻擊面。出于安全性的考量,很多開(kāi)發(fā)人員可能更傾向于選擇虛擬機(jī)——其由抽象化硬件進(jìn)行隔離,從而顯著提升了彼此交互的難度。

當(dāng)然,安全性與管理等難題必將隨著容器在生產(chǎn)環(huán)境下的進(jìn)一步普及而得到解決。就目前來(lái)講,關(guān)于容器與虛擬機(jī)孰優(yōu)孰劣的議題已經(jīng)成為開(kāi)發(fā)人員與運(yùn)維人員間的日常爭(zhēng)論素材。

最后

到這里,希望大家已經(jīng)擁有了關(guān)于Docker的必要知識(shí),也祝愿各位早日將Docker引入自己的日常工作。

當(dāng)然,如果大家在文章中發(fā)現(xiàn)了什么謬誤,也歡迎在評(píng)論欄中做出說(shuō)明。感謝大家,小數(shù)與你下次再見(jiàn)!


原文鏈接:https://medium.freecodecamp.com/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b#.sl2xp8tiv

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/26551.html

相關(guān)文章

  • docker + kubernetes=共生?相愛(ài)相殺

    摘要:二月份,微軟正式加入支持的行列,宣布容器服務(wù)支持。去年月,在亞馬遜彈性容器服務(wù)首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亞馬遜網(wǎng)絡(luò)服務(wù)于八月份以白金會(huì)員最高級(jí)別加入了。 2017年的云計(jì)算市場(chǎng),有一個(gè)領(lǐng)域獲得了空前的關(guān)注 -- Kubernetes。 Kubernetes可以追溯到2014年,當(dāng)時(shí)Google公開(kāi)發(fā)布了該項(xiàng)目的開(kāi)源代碼。2017年,Kubern...

    bovenson 評(píng)論0 收藏0
  • docker + kubernetes=共生?相愛(ài)相殺?

    摘要:二月份,微軟正式加入支持的行列,宣布容器服務(wù)支持。去年月,在亞馬遜彈性容器服務(wù)首次亮相。是年的最后一次重大更新,于月日正式推出。值得注意的公告包括亞馬遜網(wǎng)絡(luò)服務(wù)于八月份以白金會(huì)員最高級(jí)別加入了。 2017年的云計(jì)算市場(chǎng),有一個(gè)領(lǐng)域獲得了空前的關(guān)注 -- Kubernetes。 Kubernetes可以追溯到2014年,當(dāng)時(shí)Google公開(kāi)發(fā)布了該項(xiàng)目的開(kāi)源代碼。2017年,Kubern...

    tain335 評(píng)論0 收藏0
  • PHP與AJAX的相愛(ài)相殺

    摘要:響應(yīng)一般由三個(gè)部分組成由一個(gè)數(shù)字和文字組成的狀態(tài)碼,用來(lái)顯示請(qǐng)求是成功還是失敗響應(yīng)頭,包含服務(wù)器類(lèi)型,日期時(shí)間,內(nèi)容類(lèi)型和長(zhǎng)度等響應(yīng)體,也就是響應(yīng)正文。獲得形式的相應(yīng)數(shù)據(jù)。和以數(shù)字和文本形式返回狀態(tài)碼。 學(xué)習(xí)目錄: AJAX基礎(chǔ) PHP與AJAX JSON格式 jQuery中的AJAX 個(gè)人網(wǎng)站原創(chuàng)鏈接地址:不足之處歡迎留言...逃... showImg(https://segm...

    wthee 評(píng)論0 收藏0
  • PHP與AJAX的相愛(ài)相殺

    摘要:響應(yīng)一般由三個(gè)部分組成由一個(gè)數(shù)字和文字組成的狀態(tài)碼,用來(lái)顯示請(qǐng)求是成功還是失敗響應(yīng)頭,包含服務(wù)器類(lèi)型,日期時(shí)間,內(nèi)容類(lèi)型和長(zhǎng)度等響應(yīng)體,也就是響應(yīng)正文。獲得形式的相應(yīng)數(shù)據(jù)。和以數(shù)字和文本形式返回狀態(tài)碼。 學(xué)習(xí)目錄: AJAX基礎(chǔ) PHP與AJAX JSON格式 jQuery中的AJAX 個(gè)人網(wǎng)站原創(chuàng)鏈接地址:不足之處歡迎留言...逃... showImg(https://segm...

    Clect 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<