Docker個人理解總結


最新在學習Docker,記錄下自己對Docker的理解。

一.Docker是什么?

1. Docker是一個能夠把開發的應用程序自動部署到容器的開源引擎。

2.Docker使用Google公司推出的Go語言進行開發實現,基於Linux內核的cproup(control group控件組),namespace(命名空間)以及UnionFS等技術,對進程進行封裝隔離。 由於隔離的進程獨立於宿主和其它的隔離的進程,因此也稱其為容器。Docke最初實現是基於LXC。

LXC是一個系統容器。Docker是一個應用程序容器

二.Dokcer 組成原理

如圖:

Linux文件系統由bootfs和rootfs兩部分組成,bootfs主要包含 bootloader和kernel,bootloader主要是引導加載kernel,當kernel被加載到內存中后 bootfs就被umount了。 rootfs 包含的就是典型 Linux 系統中的/dev,/proc,/bin,/etc等標准目錄和文件。   Docker容器是建立在Aufs基礎上的,Aufs(Advanced Union FS)是一種Union FS, 簡單來說就是支持將不同的目錄掛載到同一個虛擬文件系統下,並實現一種layer的概念。

三.Docker的三個基本概念

1.鏡像

鏡像就是一個特殊的文件系統。 統一文件系統(Union File System)技術能夠將不同的層整合成一個文件系統,為這些層提供了一個統一的視角,這樣就隱藏了多層的存在,在用戶的角度看來,只存在一個文件系統。 一個鏡像可以放在另一個鏡像的上面。位於下面的鏡像稱為父鏡像,最底部的鏡像成為基礎鏡像。

 

2.容器——鏡像運行時的實體

鏡像(Image)和容器(Container)的關系,就像類和對象一樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器可以被創建、啟動、停止、刪除、暫停等 。

3.倉庫——集中存放鏡像文件的地方

一個Docker Registry中可以包含多個倉庫(Repository);每個倉庫可以包含多個標簽(Tag);每個標簽對應一個鏡像。所以說:鏡像倉庫是Docker用來集中存放鏡像文件的地方類似於我們之前常用的代碼倉庫。 通常,一個倉庫會包含同一個軟件不同版本的鏡像,而標簽就常用於對應該軟件的各個版本 。我們可以通過<倉庫名>:<標簽>的格式來指定具體是這個軟件哪個版本的鏡像。如果不給出標簽,將以latest作為默認標簽。

四.Docker的優點

Docker的鏡像提供了除內核外完整的運行時環境,確保了應用運行環境一致性——一致的運行環境

可以做到秒級、甚至毫秒級的啟動時間。——快速的啟動時間

避免資源會容易受到其他用戶的影響。——隔離性

善於處理集中爆發的服務器使用壓力;——彈性伸縮,

快速擴展 可以很輕易的將在一個平台上運行的應用,遷移到另一個平台上,而不用擔心運行環境的變化導致應用無法正常運行的情況。——遷移方便

使用Docker可以通過定制應用鏡像來實現持續集成、持續交付、部署。——持續交付和部署

五.Docker容器與虛擬機的區別?

傳統虛擬機技術是虛擬出一套硬件后,在其上運行一個完整操作系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行於宿主的內核,容器內沒有自己的內核,而且也沒有進行硬件虛擬。因此容器要比傳統虛擬機更為輕便。

容器是一個應用層抽象,用於將代碼和依賴資源打包在一起。 多個容器可以在同一台機器上運行,共享操作系統內核,但各自作為獨立的進程在用戶空間中運行 。與虛擬機相比, 容器占用的空間較少(容器鏡像大小通常只有幾十兆),瞬間就能完成啟動 。 虛擬機(VM)是一個物理硬件層抽象,用於將一台服務器變成多台服務器。 管理程序允許多個VM在一台機器上運行。每個VM都包含一整套操作系統、一個或多個應用、必要的二進制文件和庫資源,因此占用大量空間。而且VM啟動也十分緩慢 。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM