虛擬化分類:html
主機級虛擬化nginx
容器虛擬化git
虛擬化核心技術:web
NameSpek(命名空間);docker
做用:內容隔離tomcat
Cgroup(控制組);網絡
做用:資源分割和控制架構
Chroot(root切換);ide
做用:root切換性能
LXC(Linux 虛擬機實現)
做用:Linux虛擬化的具體實現。
Docker簡介
Docker只是Linux內核虛擬化的一個管理應用軟件,實際上使用的核心技術仍是Linux內核虛擬化相關技術。
Docker分爲企業版(Docker-EE)和社區版(Docker-CE)
Docker引擎過渡史: LXC>Libcontainer>runC
Docker-Registry
Docker-Registry是Docker的鏡像管理倉庫,和yum相似,你可使用Docker官方提供的公共Docker-Hub,也能夠本身搭建私有Registry。
倉庫分爲頂級倉庫和組織倉庫,如Nginx、CentOS、Ubuntu等就是頂級倉庫,使用應用名稱命名;組織倉庫是我的或者企業註冊生成的倉庫,格式爲:我的標識符/鏡像名稱,如:aliyun/nginx:laster;baidu/tomcat:V2
Docker-Images
Container的鏡像文件,一個惟一的鏡像文件應當由鏡像名和標籤構成,格式爲:鏡像名:標籤,如:nginx:V2;nginx:V3;tomcat:laster
Image是採用Union FS技術,將其設計爲分層存儲的架構,前一層是後一層的基礎,最底層爲bootfs(用於系統引導的文件系統,提供系統內核,容器啓動完成後會被卸載以節約資源),其次爲rootfs(由內核掛載爲「只讀」模式,然後經過「聯合掛載」技術額外掛在一個「可寫」層)。
Images-tags
做用是爲了區分相同應用鏡像的不一樣版本
鏡像加速
由於國家防火牆的緣由,從Docker-Hub下載鏡像文件速度很慢而且容易出現網絡鏈接的錯誤,因此國內就有了鏡像加速,國內有阿里雲等雲服務商提供加速服務。
Container
Image是靜態的文件,Container是根據Image生成的容器進程 ,鏡像使用的是分層存儲,容器也是如此,每個容器運行時,是以鏡像爲基礎層,在其上建立一個當前容器的存儲層,咱們能夠稱這個爲容器運行時讀寫而準備的存儲層爲容器存儲層。容器存儲層的生存週期和容器同樣,容器消亡時,容器存儲層也隨之消亡。所以,任何保存於容器存儲層的信息都會隨容器刪除而丟失。按照 Docker 最佳實踐的要求,容器不該該向其存儲層內寫入任何數據,容器存儲層要保持無狀態化。全部的文件寫入操做,都應該使用 數據卷(Volume)、或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層,直接對宿主(或網絡存儲)發生讀寫,其性能和穩定性更高。
Volume
數據卷
是一個可供一個或多個容器使用的特殊目錄,它繞過 UFS,能夠提供不少有用的特性:
數據卷
能夠在容器之間共享和重用
對 數據卷
的修改會立馬生效
對 數據卷
的更新,不會影響鏡像
數據卷
默認會一直存在,即便容器被刪除
掛載主機目錄
除了使用Volume,咱們還能夠將主機目錄掛載到Container中,用來存放須要持久化的數據。
Network
若是你用過VMware就會知道VMware安裝後會建立出幾個虛擬的網卡,用來虛擬機之間、虛擬機和主機之間的通信。Docker同樣,在安裝的時候會默認建立一個網橋,用來進行網絡通信。