什么是Docker
Docker是使用Go語言開發(fā)的一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可以只的鏡像中,然后發(fā)布到任何流行的Linux或Windows機(jī)器上,也可以實(shí)現(xiàn)虛擬化。
Docker是完全使用沙箱機(jī)制的,相互之間不會(huì)有任何接口。他在容器的基礎(chǔ)上,進(jìn)行了進(jìn)一步的封裝,從文件系統(tǒng)、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等,極大的簡(jiǎn)化了容器的創(chuàng)建和維護(hù)。使得Docker技術(shù)比虛擬機(jī)技術(shù)更為輕便、快捷。
而Docker實(shí)際上只是宿主機(jī)的一個(gè)普通的進(jìn)程,這也是Docker與傳統(tǒng)虛擬化技術(shù)的最大不同。
Docker的結(jié)構(gòu)及相關(guān)概念
一個(gè)完整的Docker有一下幾個(gè)部分組成:
1.Docker Client客戶端
? ? ? ? Docker使用客戶端--服務(wù)器(C/S)架構(gòu)模式,使用遠(yuǎn)程API來管理和創(chuàng)建Docker容器。
2.Docker Daemon守護(hù)進(jìn)程
? ? ? ? Docker Daemon作為服務(wù)端接受來自客戶的請(qǐng)求,并處理這些請(qǐng)求(創(chuàng)建、運(yùn)行、分發(fā)容器)??蛻舳撕头?wù)端既可以運(yùn)行在一個(gè)機(jī)器上,也可通過socket或者RESTful API來進(jìn)行通信。
3.Docker Image鏡像
? ? ? ? 由客戶端或者用戶構(gòu)建出來的VM模板叫做Docker Image鏡像,客戶端可使用命令來從某個(gè)鏡像啟動(dòng)一個(gè)或多個(gè)容器。
4.DockerContainer容器
? ? ? ? 使用Docker Image鏡像運(yùn)行出的實(shí)體。

為什么要使用Docker
1.環(huán)境一致性。不會(huì)出現(xiàn)開發(fā)、測(cè)試、生產(chǎn)由于環(huán)境配置不一致導(dǎo)致的各種問題,一次配置多次運(yùn)行。
2.便捷。更快速的打包、測(cè)試以及部署應(yīng)用程序,并可減少從便攜到部署運(yùn)行代碼的周期。
3.易用。Docker命令相對(duì)來說比較容易上手,無論是部署,運(yùn)行,還是運(yùn)維,都可快速上手。