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