Docker是什么?一篇文章解決你的大部分疑問
1,沒用容器化方式部署時,我們部署項目的一般流程
舉個例子,假設(shè)我們要部署一個SSM項目,那么首先我們需要購買一臺云服務(wù)器,然后安裝JDK,tomcat,mysql等依賴的關(guān)鍵組件,然后再把項目打包上線部署,運行調(diào)試,驗證程序運行結(jié)果。一切看起來都挺好的,但是問題來了,如果我們把這個項目做集群部署10臺服務(wù)器,那么就意味著什么?上述的一系列安裝依賴環(huán)境的動作,我們都需要重復(fù)做一遍。
另外一個問題,相信大家在工作中也會經(jīng)常遇到,就是本地環(huán)境沒問題,測試環(huán)境沒問題,生產(chǎn)環(huán)境卻出現(xiàn)問題,這樣情況常常是因為依賴的環(huán)境存在一些差異而造成的,所以綜上所述,這些都是體力活,我們需要一個更好的解決方案,它的名字叫Docker。
2,什么是Docker?
Docker正是解決了上述提到的問題,將服務(wù)(SSM項目)及運行環(huán)境加以封裝,并確保將這個封裝后的產(chǎn)物作為我們的交付物,這個交付物可以隨時構(gòu)建,裝載,運行,不會再因為環(huán)境的差異帶來了影響,而且這個交付物我們還只需要封裝一次,避免了重復(fù)的依賴環(huán)境安裝工作。
下面來一段比較正式的描述:
Docker 是一個開源的應(yīng)用容器引擎,基于Go語言并遵從Apache2.0協(xié)議開源產(chǎn)品。Docker 可以讓開發(fā)者打包他們的應(yīng)用以及依賴包到一個輕量級、可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。 Docker本質(zhì)是基于Linux的LXC技術(shù),來實現(xiàn)相互的隔離,使用沙箱機制,更重要的是容器性能開銷極低,因為是共享了宿主機的共同內(nèi)核。
3,Docker的幾個關(guān)鍵概念
Docker官網(wǎng):
Empowering App Development for Developers | Docker

3.1,什么是Docker引擎
Docker引擎可以理解為一個運行在服務(wù)器上的后臺服務(wù),也稱為Docker Daemon,我們只要啟動該服務(wù),就能通過Docker命令客戶端發(fā)送Docker命令與Docker引擎進行通信,Docker客戶端分為命令終端窗口和REST API客戶端。
上面的圖中,這只鯨魚就是Docker引擎(Docker Engine)上面的一個個集裝箱就是Docker容器(Docker Container) Docker引擎可以運行在基于Docker的云平臺上。
3.2,什么是Docker鏡像
Docker鏡像可以認為是我們的光盤,光盤上刻錄了數(shù)據(jù),只要將光盤放入光驅(qū)中,就能讀取光盤中的數(shù)據(jù);同樣,我們獲取Docker鏡像(光盤),并將其載入Docker引擎(光驅(qū))中,就可以運行Docker鏡像中的程序。
所以,我們將程序及其依賴環(huán)境打包到Docker鏡像中,然后將Docker鏡像重復(fù)使用。
3.3,什么是Docker容器
當(dāng)我們運行Docker鏡像,便會啟動一個Docker容器,該容器將會運行鏡像中封裝的程序。?如果將Docker鏡像理解為Java類的話,那Docker容器就相當(dāng)于類的實例。 一個Docker鏡像可以運行多個Docker容器,只要機器的性能足夠好就行。
3.4,什么是Docker鏡像中心
Docker鏡像中心,就是類似于我們的maven倉庫,統(tǒng)一管理我們的第三方依賴,那么Docker鏡像中心顧名思義就是幫助我們來管理鏡像的,可以是第三方共享的鏡像,也可以是我們自己封裝打包的鏡像。
Docker官網(wǎng)提供了一個叫Docker Hub的鏡像注冊中心(Docker Registry) 用于存放公有和私有的Docker鏡像倉庫(Docker Repository)。 我們可以通過Docker Hub下載鏡像,也可以將自己創(chuàng)建的鏡像推送到Docker Hub上。 同時,Docker Hub也將自己的核心組件Docker Registry進行了開源,我們可以獲得其鏡像,在局域網(wǎng)內(nèi)快速搭建一套私有的Docker鏡像注冊中心。
dockerHub地址:
Docker Hub
3.5,Docker的架構(gòu)體系

4,Docker vs Linux虛擬機
1. 虛擬機的工作流程
首先,在宿主機安裝虛擬機軟件,比如VMware,然后在虛擬機上,通過鏡像文件安裝操作系統(tǒng)。 此時,虛擬機軟件需要模擬硬件和網(wǎng)絡(luò)資源,會占用大量的系統(tǒng)開銷。 一臺普通的服務(wù)器,多能啟動幾十個虛擬機,而啟動一個虛擬機一般需要幾分鐘。
2. Docker工作流程
首先,在宿主機安裝Docker引擎,然后下載需要的Docker鏡像,運行Docker鏡像并啟動相應(yīng)的Docker容器。 Docker引擎可以完全利用宿主機的硬件和網(wǎng)絡(luò)資源,占用系統(tǒng)的開銷較小。 一臺普通的服務(wù)器,可啟動上千個Docker容器。

5,Docker相關(guān)網(wǎng)站推薦
docker官網(wǎng):http://www.docker.com
docker中文網(wǎng)站:https://www.docker-cn.com/
Docker Hub官網(wǎng):?https://hub.docker.com/