一文詳解--Docker應(yīng)用容器引擎
一、什么是Docker

????Docker 是基于Go語言實現(xiàn)的開源容器項目。利用操作系統(tǒng)本身已有的機(jī)制和特性,可以實現(xiàn)遠(yuǎn)超傳統(tǒng)虛擬機(jī)的輕量級虛擬化(通俗解釋:Docker內(nèi)嵌極小型系統(tǒng),例如Linux只有5M多,windows也是)。它是內(nèi)核級的虛擬化。期望達(dá)到使項目運(yùn)行環(huán)境“一次封裝,到處運(yùn)行的目的”。
????在Docker里面可以設(shè)置使用Windows還是Linux系統(tǒng),默認(rèn)是用Linux系統(tǒng),基于Ubuntu的,只有5M多,包含了最基本功能。
????利用docker創(chuàng)建的運(yùn)行環(huán)境叫做docker容器,容器是通過docker鏡像創(chuàng)建的,docker鏡像文件可以放在私有倉庫中也可以放在共有倉庫中。
學(xué)習(xí)Docker主要做兩件事情:
在Docker安裝軟件
把項目部署到Docker
二、Docker和VM對比
Docker和VM(虛擬機(jī))的功能特別像。下面對比了兩者的區(qū)別
1、結(jié)構(gòu)區(qū)別

2、應(yīng)用區(qū)別

Docker:面向內(nèi)核、軟件,docker是秒級別的
虛擬機(jī):面向硬件的,是分鐘級別的


三、Docker特點
1、效率高
用戶只需要幾分鐘,就可以把自己的程序“Docker化”。Docker依賴于“寫時復(fù)制”(copy-on-write)模型,使修改應(yīng)用程序也非常迅速,可以說達(dá)到“隨心所致,代碼即改”的境界。
隨后,就可以創(chuàng)建容器來運(yùn)行應(yīng)用程序了。大多數(shù)Docker容器只需要不到1秒中即可啟動。由于去除了管理程序的開銷,Docker容器擁有很高的性能,同時同一臺宿主機(jī)中也可以運(yùn)行更多的容器,使用戶盡可能的充分利用系統(tǒng)資源。
2、職責(zé)明確
使用Docker,開發(fā)人員只需要關(guān)心容器中運(yùn)行的應(yīng)用程序,而運(yùn)維人員只需要關(guān)心如何管理容器。Docker設(shè)計的目的就是要加強(qiáng)開發(fā)人員寫代碼的開發(fā)環(huán)境與應(yīng)用程序要部署的生產(chǎn)環(huán)境一致性。從而降低那種“開發(fā)時一切正常,肯定是運(yùn)維的問題(測試環(huán)境都是正常的,上線后出了問題就歸結(jié)為肯定是運(yùn)維的問題)”
3、結(jié)構(gòu)完整
Docker的目標(biāo)之一就是縮短代碼從開發(fā)、測試到部署、上線運(yùn)行的周期,讓你的應(yīng)用程序具備可移植性,易于構(gòu)建,并易于協(xié)作。(通俗一點說,Docker就像一個盒子,里面可以裝很多物件,如果需要這些物件的可以直接將該大盒子拿走,而不需要從該盒子中一件件的取。)
4、契合微服務(wù)架構(gòu)
Docker還鼓勵面向服務(wù)的體系結(jié)構(gòu)和微服務(wù)架構(gòu)。Docker推薦單個容器只運(yùn)行一個應(yīng)用程序或進(jìn)程,這樣就形成了一個分布式的應(yīng)用程序模型,在這種模型下,應(yīng)用程序或者服務(wù)都可以表示為一系列內(nèi)部互聯(lián)的容器,從而使分布式部署應(yīng)用程序,擴(kuò)展或調(diào)試應(yīng)用程序都變得非常簡單,同時也提高了程序的內(nèi)省性。(當(dāng)然,可以在一個容器中運(yùn)行多個應(yīng)用程序)
四、Docker架構(gòu)(重點)

1、Docker daemon(Docker守護(hù)進(jìn)程)
Docker daemon是一個運(yùn)行在宿主機(jī)(DOCKER_HOST)的后臺進(jìn)程。我們可通過Docker客戶端與之通信。
2、Client(Docker客戶端)
Docker客戶端是Docker的用戶界面,它可以接受用戶命令和配置標(biāo)識,并與Docker daemon通信。圖中,docker build等都是Docker的相關(guān)命令。
3、Images(Docker鏡像)
Docker鏡像是一個只讀模板,它包含創(chuàng)建Docker容器的說明。
和虛擬機(jī)中快照是類似的。在虛擬機(jī)中根據(jù)快照克隆一臺虛擬機(jī)中。
在Docker中根據(jù)Images創(chuàng)建容器。
4、Container(容器)
容器是鏡像的可運(yùn)行實例。
容器就相當(dāng)于VMware中每一個克隆出來的虛擬機(jī)。但是容器要比虛擬機(jī)體積小很多。
5、Registry(倉庫)
????Docker Registry是一個集中存儲與分發(fā)鏡像的服務(wù)。我們構(gòu)建完Docker鏡像后,就可在當(dāng)前宿主機(jī)上運(yùn)行。但如果想要在其他機(jī)器上運(yùn)行這個鏡像,我們就需要手動拷貝。此時,我們可借助Docker Registry來避免鏡像的手動拷貝。
????一個Docker Registry可包含多個Docker倉庫;每個倉庫可包含多個鏡像標(biāo)簽;每個標(biāo)簽對應(yīng)一個Docker鏡像。這跟Maven的倉庫有點類似,如果把Docker Registry比作Maven倉庫的話,那么Docker倉庫就可理解為某jar包的路徑,而鏡像標(biāo)簽則可理解為jar包的版本號。

視頻中有更多Docker容器技術(shù)的知識哦~歡迎學(xué)習(xí)