一、什麼是Docker?
Docker是一個開源的應用容器引擎,可以輕鬆地為任何應用建立一個輕量級、可移植、自給自足的容器。開發者在本地編譯測試通過的容器可以批量地在生產環境中部署,包括虛擬機器和其他平臺。
我們可以將自己的應用以及依賴的環境一起打包到一個容器中,然後這個容器就可以很容易的放到其他機器上執行。而且非常易於裝載、複製、移除。
以前的部署方式就是每次部署應用的時候都需要在電腦上重複地走一下部署流程,比如下載安裝環境、依賴框架、搭建服務等。但是有了Docker容器技術,我們無需重複的操作,只需要一次打包,處處執行,而且每個容器之間都是隔離的環境,互不影響。
二、虛擬機器和Docker對比
在上圖中,容器是一個應用層抽象,用於將程式碼和依賴資源打包在一起。多個容器可以在同一臺機器上執行,共享作業系統核心,但各自作為獨立的程式在使用者空間中執行。與虛擬機器相比,容器佔用的空間較少,瞬間就能完成啟動。
虛擬機器則是一個物理硬體層抽象,用於將一臺伺服器變成多臺伺服器,管理程式允許多個虛擬機器在一臺機器上執行,每個虛擬機器都包含一個獨立的作業系統、一個或多個應用、必要的二進位制檔案和資源庫。因此佔用大量空間,啟動也十分緩慢。
由於容器所需要的資源要比虛擬機器少(虛擬機器需要一個完整的系統環境),所以它們易於部署且快速啟動。
特性 | 容器 | 虛擬機器 |
啟動速度 |
秒級 幾秒內就可以啟動 |
分鐘級 有時候需要長達十幾分鍾才能啟動,具體看環境安裝資源大小而定 |
儲存空間佔用 | 一般為MB為單位 | 需要的空間至少G單位的空間 |
效能 | 接近原生,基本沒有其他的消耗 | 作業系統會佔用較多的資源 |
系統支援量 | 一臺普通的伺服器可以支援上千個容器 | 一般最多支援幾十個虛擬機器,而且看電腦配置而定 |
三、拋開虛擬機器面向Docker容器
現在大應用不斷增加,容器化是技術發的必然趨勢,容器技術也會不斷地進化,所以我們要把容器技術用起來,就從Docker開始!
有很多小夥伴都覺得用這個有一定地門檻,安裝太麻煩,當然,這也是誤區。
有些人認為用Docker很麻煩,只有大公司用,或者學習這個成本很高,認為對現有系統、架構改造太大,成本太高等等,這些都是誤區。
四、Docker的三個基本概念
1、映象
Docker映象是一個特殊的檔案系統,除了提供容器執行時所需要的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的配置引數。映象不包含任何動態資料,其內容在構建後也不會改變。
我們可以簡單的理解,映象就像是一個什麼環境、依賴資源、檔案和你的應用程式都跟你打包的一個檔案系統。就類似於作業系統一樣,作業系統也是由C盤下的Windows資料夾和其他系統檔案組成的一樣,要執行作業系統,肯定是需要這些資源、檔案、依賴都存在,你可以理解為這一整套檔案系統就是映象。
2、容器
容器和映象的關係就像是物件導向程式中的例項和類一樣,類是靜態的,例項是通過類執行起來才有的。執行起來的程式才有程式。
容器你可以理解為執行起來的映象,比如,一套系統程式也是由很多個檔案、資源、依賴組成,那麼把它完整的一套說法類似叫映象。如果系統程式沒有執行起來,它其實也是放在硬碟上的系統檔案而已。而容器,就是表示把系統程式執行起來,相當在電腦裡開一個程式,執行起來的系統程式我們稱之為容器。你可以這麼想:針對同一套系統程式你可以執行多個,就是有多個程式。對於容器來說,你也可以同時執行多個同一個映象的容器,這方便我們做叢集。
3、倉庫
映象我們構建好後,可以很容易的在當前的作業系統上執行,但是如果需要在其他伺服器上使用這個映象,我們就需要一個集中存放、分發映象的一個服務中心。
就類似於我們開發了一套程式,檔案、依賴、資源都打包在一起了,這樣很快的可以在本機執行,但是你要用,我是不是需要上傳到一個軟體管理服務網站,你下載就行了,對吧。如果另外一個人也有一套程式給你用,那麼那個人也可以先上傳到軟體管理服務網站,然後你下載,那麼這個軟體管理服務網站,在Docker裡叫做倉庫服務中心,當然,上面舉的例子不一定符合Docker概念,但可以作為理解倉庫意思的參考,Docker裡的倉庫是放映象的,與我們傳統的還是有區別的。
每個倉庫可以包含多個標籤,每個標籤對應一個映象,通常一個倉庫包含同一個軟體不同版本的映象,而根據標籤來區分軟體的各個不同版本。如果我們要使用倉庫裡的映象,一般都會指定一個標籤用於指定軟體版本,如果不指定標籤則用最新的一個版本。
五、下載安裝和執行Docker(這裡用Docker提供的Docker for Windows為例,Docker ToolBox適用於Windows 10以下的系統,我本人是Window 10)
Docker 是一個應用容器引擎,肯定需要安裝才能使用。
Docker可以執行在Linux上,也可以執行在Windows上,在這裡,目前以Windows環境為例,後面再說Linux上的Docker使用,一般在Linux上運用Docker居多。
要在Windows上執行Docker,需要滿足下面幾個條件:
1、Windows 10 64位:Pro、Enterprise或Education (Build 14393或更高版本)
2、在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的常用命令、如何拉取映象和執行容器等(這個拉取映象和執行容器的過程與我們平時的下載軟體包並安裝執行是多麼的相似,但Docker卻輕量、便捷得多)。