Docker是一種基于容器的虛擬化技術(shù),可以讓用戶在不改變底層操作系統(tǒng)的情況下,打包、分發(fā)和運(yùn)行應(yīng)用程序。Docker的核心原理包括虛擬化、鏡像和容器三個(gè)方面。
虛擬化
Docker的虛擬化采用的是Linux容器技術(shù),也稱為LXC。LXC是Linux容器的縮寫,是Linux內(nèi)核提供的一組隔離和限制進(jìn)程資源使用的功能。每個(gè)容器擁有自己獨(dú)立的命名空間、文件系統(tǒng)和進(jìn)程空間。容器之間是完全隔離的,因此可以同時(shí)運(yùn)行多個(gè)容器。
注:Linux容器技術(shù)不同于傳統(tǒng)的全虛擬化技術(shù)(如VMware),后者基于全功能的虛擬機(jī),需要獨(dú)立的操作系統(tǒng)、硬件資源和文件系統(tǒng),對物理服務(wù)器產(chǎn)生較大的壓力。
鏡像
Docker的鏡像是應(yīng)用程序運(yùn)行的基礎(chǔ)。鏡像實(shí)際上是一個(gè)文件包,包含了運(yùn)行應(yīng)用程序所需的全部組件和配置信息,如庫文件、環(huán)境變量、配置文件、中間件等。鏡像的定義采用Dockerfile命令腳本,可以定制化地創(chuàng)建應(yīng)用程序的運(yùn)行環(huán)境。
注:Docker的鏡像和虛擬機(jī)鏡像的區(qū)別在于,Docker鏡像只包含運(yùn)行應(yīng)用程序所需的必要組件,而虛擬機(jī)鏡像則需要包含完整的操作系統(tǒng)。
容器
Docker的容器是鏡像的運(yùn)行實(shí)例。容器實(shí)際上是一個(gè)進(jìn)程,在命名空間內(nèi)運(yùn)行,擁有自己獨(dú)立的文件系統(tǒng)和進(jìn)程空間。容器可以被啟動、停止、刪除和重啟等操作。
綜合來看,Docker的原理是基于輕量級容器實(shí)現(xiàn)的。Docker的虛擬化采用的是Linux容器技術(shù),使得不同的應(yīng)用程序運(yùn)行在獨(dú)立的容器內(nèi);鏡像是應(yīng)用程序運(yùn)行的基礎(chǔ),由Dockerfile命令腳本定義;容器是鏡像的運(yùn)行實(shí)例,可以啟動、停止、刪除和重啟。通過這些原理,Docker可以實(shí)現(xiàn)應(yīng)用程序的快速打包、部署和管理。