通 俗 地 講,Docker技術就是將各種程序進行打包,并放置到一個容器中,并將其部署在另外的主機上,之后啟動該容器即可,而無需進行任何額外的配置。Docker可以實現輕量級的操作系統虛擬化解決方案,Docker的基礎是Linux容器(LXC),Cgroup等技術,在Linux中已經包含了LXC技術。
所謂的Linux容器,指的是可以將各種對象模擬成自己的進程,然后在系統中啟動,各個進程之間相互不影響。
Cgroup是Control Group的簡稱,它為Linux內核提供了一種任務聚集和劃分的機制,通過一組參數集合將一些任務組織成一個或多個子系統。子系統是根據Cgroup對任務的劃分功能,將任務按照一種指定的屬性劃分成的一個組,主要用來實現資源的控制。
Docker在LXC的基礎上進行了進一步的封裝,使用戶無需關心容器的管理,讓操作變得更為簡單。用戶操作Docker的容器,就如同操作一個快速輕量級的虛擬機一樣。因此,也可以將不同的Docker容器理解為不同的虛擬機。
Docker就是基于本機的物理系統,通過Docker Engine去部署各種應用,應用之間是彼此隔離的,而無需去安裝更上層的虛擬系統。這和傳統的虛擬技術是完全不同的,例如對于KVM來說,需要先在自身硬件和Linux系統上再虛擬出一個系統,并在該系統上來部署應用。
對于Docker虛擬化來說,涉及到鏡像、容器、倉庫等關鍵要素。Docker的鏡像即模板,類似于ISO鏡像文件。容器就是使用鏡像來啟動常見的應用或者系統,在當前系統上安裝所需的容器即可,而無需構建新的系統。倉庫是存放鏡像的地方,包括公開倉庫和私有倉庫兩種形式。
Docker虛擬機具有操作啟動快,輕量級虛擬,開源免費以及發展前景廣闊等特點。例如,其啟動、停止、開始或者重啟等等管理操作的速度是以秒或毫秒為單位的,可以大大提高系統的性能。
利用輕量級虛擬化特性,可以很輕松地在一臺服務器上部署成百上千個容器,使您擁有數量巨大的虛擬系統,而傳統的虛擬化一般只能擁有幾十個虛擬機。
Docker是開源的,免費的,低成本的虛擬化技術,由主流的Linux內核支持并驅動。
Docker日益受到用戶的歡迎,包括各大主流公司都在推動Docker的快速發展。
當然,Docker使用的容器和VMware等使用的虛擬機是存在差別的,虛擬機是一個完整的系統,而容器只需要是一個最基本的鏡像而已,例如在Docke中虛擬一個Linux系統,可能只需要一二百兆大小的鏡像。如果想虛擬一個應用程序(例如TomCat等),需要的鏡像體積會更小。