Docker的核心底層技術有哪些?Docker可以運行在64位Linux發行版以及蘋果和微軟系統上,但后兩者只能使用虛擬機作為宿主機。所有的可運行的容器運行在宿主機系統的內核之上,但是鎖定在自己的運行環境中,與主機以及其他容器的運行環境是隔離的。Docker底層的兩個核心技術分別是Namespaces和Cgroups(Controlgroups),并且使用了一系列 Linux 內核提供的特性來實現容器的基本功能,包含命名空間、群組控制、聯合文件系統以及LXC等特性。
命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian)的(de)作用(yong)(yong)是(shi)為容(rong)器(qi)(qi)提供進程間(jian)(jian)隔(ge)離的(de)技術,每(mei)(mei)個(ge)容(rong)器(qi)(qi)都(dou)有獨立的(de)運(yun)行(xing)空(kong)(kong)(kong)(kong)間(jian)(jian),比如(ru)pid,net,mnt,uts,ipc等命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian),以及為每(mei)(mei)個(ge)容(rong)器(qi)(qi)提供不同的(de)主機(ji)名。命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian)可以保證不同的(de)容(rong)器(qi)(qi)之間(jian)(jian)不會相互干擾,每(mei)(mei)個(ge)容(rong)器(qi)(qi)都(dou)像(xiang)是(shi)一個(ge)獨立空(kong)(kong)(kong)(kong)間(jian)(jian)且(qie)有可使用(yong)(yong)的(de)系(xi)統。利用(yong)(yong)命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian)提供了一個(ge)隔(ge)離層,每(mei)(mei)一個(ge)應用(yong)(yong)服務(wu)都(dou)是(shi)在(zai)它(ta)們自己(ji)的(de)命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian)中運(yun)行(xing)而且(qie)不會訪問到命(ming)(ming)名空(kong)(kong)(kong)(kong)間(jian)(jian)之外(wai)的(de)資源。
(2)群組控制(Cgroups)。
Docker使用(yong)到了群組控制(zhi)技術(shu)來(lai)管(guan)理(li)可(ke)利用(yong)的資(zi)源,其主要具(ju)有對共享資(zi)源的分(fen)配(pei)、限制(zhi)、審計及(ji)管(guan)理(li)等(deng)功能,例如可(ke)以(yi)為每(mei)個容器(qi)分(fen)配(pei)固定的CPU、內存以(yi)及(ji)I/O等(deng)資(zi)源。群組控制(zhi)特性使得容器(qi)能在(zai)物理(li)機上互不干(gan)擾地運行,并且平等(deng)使用(yong)物理(li)資(zi)源。
(3)聯合文件系統(AUFS)。
聯合文(wen)件(jian)系(xi)統(tong)(tong)是一個分層(ceng)的(de)(de)(de)輕(qing)量級且(qie)高性能的(de)(de)(de)文(wen)件(jian)系(xi)統(tong)(tong),Docker使用該文(wen)件(jian)系(xi)統(tong)(tong)疊加分層(ceng)的(de)(de)(de)構造容(rong)器。Docker可以(yi)使用很(hen)多種類的(de)(de)(de)文(wen)件(jian)系(xi)統(tong)(tong),包括AUFS,btrfs,vfs以(yi)及DeviceMapper等。正是具有構建(jian)Docker鏡像(xiang)(xiang)基礎的(de)(de)(de)AUFS文(wen)件(jian)系(xi)統(tong)(tong),將具有不同文(wen)件(jian)系(xi)統(tong)(tong)結構的(de)(de)(de)鏡像(xiang)(xiang)層(ceng)進(jin)行疊加掛載(zai),讓(rang)它(ta)們看(kan)上去就像(xiang)(xiang)是一個文(wen)件(jian)系(xi)統(tong)(tong)。
(4)LXC(Linux Container)。
LXC目標是(shi)提供一(yi)個共享(xiang)(xiang)宿主(zhu)機(ji)內核(he)的(de)系(xi)統級虛擬(ni)化方法,在運行(xing)時不用重復加(jia)載系(xi)統內核(he),并(bing)且(qie)具有(you)很多(duo)的(de)容(rong)器共享(xiang)(xiang)主(zhu)機(ji)一(yi)個內核(he)的(de)優(you)勢,因此可以提高容(rong)器的(de)啟動速(su)度,并(bing)且(qie)大大減少占用主(zhu)機(ji)的(de)物理資源。