【本篇學習筆記來源於 Docker 從入門到實踐】git
1.什麼事Docker?【What】docker
Docker在容器的基礎上,進行了進一步的封裝,從文件系統、網絡互聯到進程隔離等,極大的簡化了容器的建立和維護。從而讓Docker技術比虛擬機技術更爲輕便、快捷。服務器
2.Docker和傳統虛擬化方式的不一樣。網絡
傳統虛擬機技術是虛擬一套硬件後,在其上運行一個完整操做系統,在該系統上再運行所需應用進程;而容器內的應用進程直接運行與宿主的內核,容器中沒有本身的內核,並且沒有進行硬件虛擬。所以容器要比傳統虛擬機更爲輕便。架構
3.爲何要使用Docker?【Why】性能
- 更高效的利用系統資源
- 更快速的啓動時間
- 一致的運行環境
- 持續交付和部署
- 更輕鬆的遷移
- 更輕鬆的維護和擴展
對比傳統虛擬機總結學習
4.基本概念操作系統
Docker中包含三個基本概念:鏡像(Image)、容器(Container)和倉庫(Repository)。設計
Docker鏡像是一個特殊的文件系統,除了提供容器運行時須要的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數。鏡像不包含任何動態數據,其內容在構建後不會被改變。對象
Docker採用了Union FS 的技術,將其設計爲分層存儲的架構。
Docker容器。鏡像和容器的關係,就像是面向對象程序設計中的類和實例同樣。鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除和暫停等。
容器跟鏡像同樣,每個容器運行時,是以鏡像爲基礎層,在其上建立一個當前容器的存儲層,容器存儲層的生存週期和容器同樣,容器消亡是,容器存儲層也隨之消亡。即,任何保存於容器存儲層的信息都會隨容器刪除而丟失。
按照Docker最佳時間的要求,容器不該該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。全部的文件寫入操做,都應該使用數據卷,或綁定宿主目錄,這樣會跳過容器存儲層,直接對宿主發生讀寫,其性能和穩定性更高。
由於,數據卷的生存週期獨立於容器,容器消亡,數據卷不會消亡。所以,使用數據卷後,容器刪除或從新運行以後,數據不會丟失。
鏡像構建完成後,很容易在當前的宿主機上運行,若是須要在其餘服務器上使用這個鏡像,咱們就須要一個集中的存儲、分發鏡像的服務,DockerRegister。
一個DockerRegister中包含多個倉庫,每一個倉庫能夠包含多個標籤,每一個標籤對應一個鏡像。