1、什麼是Docker?mysql
Docker是一個開源的應用容器引擎,能夠輕鬆地爲任何應用建立一個輕量級、可移植、自給自足的容器。開發者在本地編譯測試經過的容器能夠批量地在生產環境中部署,包括虛擬機和其餘平臺。redis
咱們能夠將本身的應用以及依賴的環境一塊兒打包到一個容器中,而後這個容器就能夠很容易的放到其餘機器上運行。並且很是易於裝載、複製、移除。sql
之前的部署方式就是每次部署應用的時候都須要在電腦上重複地走一下部署流程,好比下載安裝環境、依賴框架、搭建服務等。可是有了Docker容器技術,咱們無需重複的操做,只須要一次打包,到處運行,並且每一個容器之間都是隔離的環境,互不影響。docker
2、虛擬機和Docker對比windows
在上圖中,容器是一個應用層抽象,用於將代碼和依賴資源打包在一塊兒。多個容器能夠在同一臺機器上運行,共享操做系統內核,但各自做爲獨立的進程在用戶空間中運行。與虛擬機相比,容器佔用的空間較少,瞬間就能完成啓動。服務器
虛擬機則是一個物理硬件層抽象,用於將一臺服務器變成多臺服務器,管理程序容許多個虛擬機在一臺機器上運行,每一個虛擬機都包含一個獨立的操做系統、一個或多個應用、必要的二進制文件和資源庫。所以佔用大量空間,啓動也十分緩慢。架構
因爲容器所須要的資源要比虛擬機少(虛擬機須要一個完整的系統環境),因此它們易於部署且快速啓動。框架
特性 | 容器 | 虛擬機 |
啓動速度 | 秒級工具 幾秒內就能夠啓動性能 |
分鐘級 有時候須要長達十幾分鍾才能啓動,具體看環境安裝資源大小而定 |
存儲空間佔用 | 通常爲MB爲單位 | 須要的空間至少G單位的空間 |
性能 | 接近原生,基本沒有其餘的消耗 | 操做系統會佔用較多的資源 |
系統支持量 | 一臺普通的服務器能夠支持上千個容器 | 通常最多支持幾十個虛擬機,並且看電腦配置而定 |
3、拋開虛擬機面向Docker容器
如今大應用不斷增長,容器化是技術發的必然趨勢,容器技術也會不斷地進化,因此咱們要把容器技術用起來,就從Docker開始!
有不少小夥伴都以爲用這個有必定地門檻,安裝太麻煩,固然,這也是誤區。
有些人認爲用Docker很麻煩,只有大公司用,或者學習這個成本很高,認爲對現有系統、架構改造太大,成本過高等等,這些都是誤區。
4、Docker的三個基本概念
一、鏡像
Docker鏡像是一個特殊的文件系統,除了提供容器運行時所須要的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的配置參數。鏡像不包含任何動態數據,其內容在構建後也不會改變。
咱們能夠簡單的理解,鏡像就像是一個什麼環境、依賴資源、文件和你的應用程序都跟你打包的一個文件系統。就相似於操做系統同樣,操做系統也是由C盤下的Windows文件夾和其餘系統文件組成的同樣,要運行操做系統,確定是須要這些資源、文件、依賴都存在,你能夠理解爲這一整套文件系統就是鏡像。
二、容器
容器和鏡像的關係就像是面向對象程序中的實例和類同樣,類是靜態的,實例是經過類運行起來纔有的。運行起來的程序纔有進程。
容器你能夠理解爲運行起來的鏡像,好比,一套系統程序也是由不少個文件、資源、依賴組成,那麼把它完整的一套說法相似叫鏡像。若是系統程序沒有運行起來,它其實也是放在硬盤上的系統文件而已。而容器,就是表示把系統程序運行起來,至關在電腦裏開一個進程,運行起來的系統程序咱們稱之爲容器。你能夠這麼想:針對同一套系統程序你能夠運行多個,就是有多個進程。對於容器來講,你也能夠同時運行多個同一個鏡像的容器,這方便咱們作集羣。
三、倉庫
鏡像咱們構建好後,能夠很容易的在當前的操做系統上運行,可是若是須要在其餘服務器上使用這個鏡像,咱們就須要一個集中存放、分發鏡像的一個服務中心。
就相似於咱們開發了一套程序,文件、依賴、資源都打包在一塊兒了,這樣很快的能夠在本機運行,可是你要用,我是否是須要上傳到一個軟件管理服務網站,你下載就好了,對吧。若是另一我的也有一套程序給你用,那麼那我的也能夠先上傳到軟件管理服務網站,而後你下載,那麼這個軟件管理服務網站,在Docker裏叫作倉庫服務中心,固然,上面舉的例子不必定符合Docker概念,但能夠做爲理解倉庫意思的參考,Docker裏的倉庫是放鏡像的,與咱們傳統的仍是有區別的。
每一個倉庫能夠包含多個標籤,每一個標籤對應一個鏡像,一般一個倉庫包含同一個軟件不一樣版本的鏡像,而根據標籤來區分軟件的各個不一樣版本。若是咱們要使用倉庫裏的鏡像,通常都會指定一個標籤用於指定軟件版本,若是不指定標籤則用最新的一個版本。
5、下載安裝和運行Docker(這裏用Docker提供的Docker for Windows爲例,Docker ToolBox適用於Windows 10如下的系統,我本人是Window 10)
Docker 是一個應用容器引擎,確定須要安裝才能使用。
Docker能夠運行在Linux上,也能夠運行在Windows上,在這裏,目前以Windows環境爲例,後面再說Linux上的Docker使用,通常在Linux上運用Docker居多。
要在Windows上運行Docker,須要知足下面幾個條件:
一、Windows 10 64位:Pro、Enterprise或Education (Build 14393或更高版本)
二、在BIOS中啓用虛擬化。通常默認是啓用的
下載安裝後須要重啓電腦,若是運行遇到報錯能夠根據錯誤提示來進行修改環境,常見的以下:
啓用Hyper-V
下載地址:https://pan.baidu.com/s/12XeL11JHxsCVvOCxM3r5gA 提取碼: n3gw (官方地址有點慢,這裏就不放地址了,直接進入Docker官網便可,也能夠用阿里雲提供的:http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/)
安裝成功後,桌面會有一個Docker圖標:
雙擊運行後,右下角會多出一個託管圖標:
右鍵:
點擊Settings進入設置面板:
界面左下角有個綠色圖標+Docker running,表示Docker已經正常運行起來了。
在後面的使用中,咱們會用到不少不一樣的鏡像,可是因爲Docker 提供的鏡像倉庫中心是國外地址,下載鏡像對於咱們來講就很慢,咱們能夠經過修改Docker配置文件或圖形化操做來添加了個鏡像加速配置。咱們國內的有不少大廠提供了容器加速地址,好比阿里雲、騰訊等。
在這裏我用阿里雲的:https://mtlxrshz.mirror.aliyuncs.com
若是是Windows 10的用戶則直接如下操做:修改registry-mirros節點。
修改後重啓Docker服務便可。
重啓後咱們能夠小試一下:
打開Windows PowerShell 工具
打開後,輸出命令 docker Image ls 表示輸出當前已經存在的鏡像列表如:
這是我本機的,我上面裝載了rabbitmq、mysql和redis經常使用的服務工具鏡像。
好了,後續我就接着爲你們介紹Docker的經常使用命令、如何拉取鏡像和運行容器等。