通 俗 地 講,Docker技術(shù)就是將各種程序進(jìn)行打包,并放置到一個(gè)容器中,并將其部署在另外的主機(jī)上,之后啟動(dòng)該容器即可,而無(wú)需進(jìn)行任何額外的配置。Docker可以實(shí)現(xiàn)輕量級(jí)的操作系統(tǒng)虛擬化解決方案,Docker的基礎(chǔ)是Linux容器(LXC),Cgroup等技術(shù),在Linux中已經(jīng)包含了LXC技術(shù)。
所謂的Linux容器,指的是可以將各種對(duì)象模擬成自己的進(jìn)程,然后在系統(tǒng)中啟動(dòng),各個(gè)進(jìn)程之間相互不影響。
Cgroup是Control Group的簡(jiǎn)稱,它為L(zhǎng)inux內(nèi)核提供了一種任務(wù)聚集和劃分的機(jī)制,通過一組參數(shù)集合將一些任務(wù)組織成一個(gè)或多個(gè)子系統(tǒng)。子系統(tǒng)是根據(jù)Cgroup對(duì)任務(wù)的劃分功能,將任務(wù)按照一種指定的屬性劃分成的一個(gè)組,主要用來實(shí)現(xiàn)資源的控制。
Docker在LXC的基礎(chǔ)上進(jìn)行了進(jìn)一步的封裝,使用戶無(wú)需關(guān)心容器的管理,讓操作變得更為簡(jiǎn)單。用戶操作Docker的容器,就如同操作一個(gè)快速輕量級(jí)的虛擬機(jī)一樣。因此,也可以將不同的Docker容器理解為不同的虛擬機(jī)。
Docker就是基于本機(jī)的物理系統(tǒng),通過Docker Engine去部署各種應(yīng)用,應(yīng)用之間是彼此隔離的,而無(wú)需去安裝更上層的虛擬系統(tǒng)。這和傳統(tǒng)的虛擬技術(shù)是完全不同的,例如對(duì)于KVM來說,需要先在自身硬件和Linux系統(tǒng)上再虛擬出一個(gè)系統(tǒng),并在該系統(tǒng)上來部署應(yīng)用。
對(duì)于Docker虛擬化來說,涉及到鏡像、容器、倉(cāng)庫(kù)等關(guān)鍵要素。Docker的鏡像即模板,類似于ISO鏡像文件。容器就是使用鏡像來啟動(dòng)常見的應(yīng)用或者系統(tǒng),在當(dāng)前系統(tǒng)上安裝所需的容器即可,而無(wú)需構(gòu)建新的系統(tǒng)。倉(cāng)庫(kù)是存放鏡像的地方,包括公開倉(cāng)庫(kù)和私有倉(cāng)庫(kù)兩種形式。
Docker虛擬機(jī)具有操作啟動(dòng)快,輕量級(jí)虛擬,開源免費(fèi)以及發(fā)展前景廣闊等特點(diǎn)。例如,其啟動(dòng)、停止、開始或者重啟等等管理操作的速度是以秒或毫秒為單位的,可以大大提高系統(tǒng)的性能。
利用輕量級(jí)虛擬化特性,可以很輕松地在一臺(tái)服務(wù)器上部署成百上千個(gè)容器,使您擁有數(shù)量巨大的虛擬系統(tǒng),而傳統(tǒng)的虛擬化一般只能擁有幾十個(gè)虛擬機(jī)。
Docker是開源的,免費(fèi)的,低成本的虛擬化技術(shù),由主流的Linux內(nèi)核支持并驅(qū)動(dòng)。
Docker日益受到用戶的歡迎,包括各大主流公司都在推動(dòng)Docker的快速發(fā)展。
當(dāng)然,Docker使用的容器和VMware等使用的虛擬機(jī)是存在差別的,虛擬機(jī)是一個(gè)完整的系統(tǒng),而容器只需要是一個(gè)最基本的鏡像而已,例如在Docke中虛擬一個(gè)Linux系統(tǒng),可能只需要一二百兆大小的鏡像。如果想虛擬一個(gè)應(yīng)用程序(例如TomCat等),需要的鏡像體積會(huì)更小。