Docker不是唯一的容器平臺(tái),也不是第一個(gè)推出的。其他框架,如OpenVZ和LXC,從20世紀(jì)20年代中期誕生。而其他類似容器的技術(shù),如FreeBSD更進(jìn)一步。而Docker在2013年發(fā)布,與目前的大多數(shù)主流技術(shù)相比,是一個(gè)非常年輕的技術(shù)。
但是,Docker卻逐漸成為當(dāng)前最受歡迎的云開源項(xiàng)目。
今天的Docker公司脫胎于一個(gè)平臺(tái)即服務(wù)的初創(chuàng)公司dotCloud。dotCloud團(tuán)隊(duì)發(fā)現(xiàn),在許多應(yīng)用程序和客戶之間管理依賴關(guān)系和二進(jìn)制文件需要做大量的工作。因此,他們將Linux cgroups和namespaces的一些功能組合成一個(gè)簡(jiǎn)單易用的包,這樣應(yīng)用程序就可以在任何基礎(chǔ)設(shè)施上持續(xù)運(yùn)行。這個(gè)包就是Docker鏡像,它提供將應(yīng)用程序和庫(kù)封裝在單個(gè)包中(Docker鏡像),因此應(yīng)用程序可以跨多環(huán)境一致部署; 提供類似于git的語(yǔ)義,例如“dockerpush”,“docker commit”,這樣可以讓應(yīng)用程序開發(fā)人員可以輕松地采用新技術(shù),并將其融入到現(xiàn)有的workflow中。
除此之外,將Docker鏡像定義為不可變層,啟用不可變的基礎(chǔ)設(shè)施。提交的更改被存儲(chǔ)為一個(gè)單獨(dú)的只讀層,這讓鏡像復(fù)用和跟蹤更改變得更加容易。另外,層還可以通過(guò)傳輸更新而不是整個(gè)鏡像來(lái)節(jié)省磁盤空間和網(wǎng)絡(luò)流量; 通過(guò)使用可以臨時(shí)存儲(chǔ)運(yùn)行時(shí)更改的可寫層來(lái)實(shí)例化不可變映像,從而方便快速部署和擴(kuò)展應(yīng)用程序的多個(gè)實(shí)例。
所以相比之下,Docker容器是創(chuàng)建密集環(huán)境的理想選擇,在這種環(huán)境中,主機(jī)服務(wù)器的資源被充分利用,但不會(huì)被過(guò)度使用。這是因?yàn)?a href="http://www.qzkangyuan.com/cnidc/cloud/yzx/20170627/12453.html">Docker容器不需要通過(guò)在容器內(nèi)創(chuàng)建客戶機(jī)操作系統(tǒng)來(lái)復(fù)制主機(jī)操作系統(tǒng)的功能。 此外,韓國(guó)百兆不限流主機(jī) 新加坡服務(wù)器,Docker不會(huì)強(qiáng)制您為容器分配給定數(shù)量的資源(雖然您可以為單個(gè)容器設(shè)置資源配額)。這意味著Docker容器能夠更高效和動(dòng)態(tài)地使用來(lái)自主機(jī)的資源。當(dāng)放置在一個(gè)容器或服務(wù)上的需求減少時(shí),它所消耗的資源將被釋放以供其他服務(wù)使用。
因此,這讓Docker擁有了讓人信服的優(yōu)點(diǎn):
簡(jiǎn)化配置:Docker倡導(dǎo)的主要使用場(chǎng)合是簡(jiǎn)化配置。虛擬機(jī)的一大優(yōu)點(diǎn)在于,能夠在你的基礎(chǔ)設(shè)施上運(yùn)行任何平臺(tái),虛擬機(jī)有自己的配置。Docker提供了同樣這項(xiàng)功能,卻沒(méi)有虛擬機(jī)的開銷。它讓你可以將環(huán)境和配置放入到代碼中加以部署。同樣的Docker配置還可以用在各種環(huán)境中。這將基礎(chǔ)設(shè)施需求與應(yīng)用程序環(huán)境分離開來(lái)。
代碼流水線管理:從開發(fā)環(huán)境直到生產(chǎn)環(huán)境,Docker為應(yīng)用程序提供了始終一致的環(huán)境,因而簡(jiǎn)化了代碼開發(fā)和部署流水線。 Docker映像不可改變的特性以及易于構(gòu)建,directadmin安裝 directadmin漢化,可以幫助你實(shí)現(xiàn)從開發(fā)環(huán)境直到生產(chǎn)環(huán)境,應(yīng)用程序的運(yùn)行環(huán)境都不發(fā)生變化。
服務(wù)器合并:就像使用虛擬機(jī)來(lái)合并多個(gè)應(yīng)用程序一樣,Docker的應(yīng)用程序隔離功能可以合并多臺(tái)服務(wù)器,以節(jié)省成本。然而,由于沒(méi)有多個(gè)操作系統(tǒng)的內(nèi)存占用空間,又能夠在諸實(shí)例之間共享閑置未用的內(nèi)存,Docker提供的服務(wù)器合并效果比借助虛擬機(jī)所能實(shí)現(xiàn)的好得多。
調(diào)試功能:Docker提供了未必是容器所特有的許多工具,但是它們與容器概念很搭。它們還提供了極其有用的功能。這包括:能夠檢查容器和容器版本,另外還能讓兩個(gè)容器有所不同。這在修復(fù)應(yīng)用程序時(shí)大有用處。
快速部署:在虛擬機(jī)出現(xiàn)之前,配置新的硬件資源需要數(shù)天。虛擬化將這個(gè)時(shí)間縮短到了幾分鐘。Docker更是縮短到了短短幾秒鐘,因?yàn)樗恍枰獮檫@個(gè)過(guò)程創(chuàng)建容器,并不啟動(dòng)操作系統(tǒng)。正是這項(xiàng)支持性技術(shù),促使谷歌和Facebook使用容器。