一,Docker簡介
1,什麼是容器
(1)一種虛擬化的方案
(2)操作系統級別的虛擬化
(3)只能運行相同或相似內核的操作系統
(4)依賴於Linux內核特性:Namespace和CGroups(Control Group)
2,虛擬機與容器對比
與虛擬相比,容器佔用的磁盤空間更少,如下圖,使用虛擬機部署應用需要包含應用,依賴的類庫和完整的操作系統,但是容器只需要應用和其依賴的類庫。
虛擬機原本可以幾十M的應用可能需要幾個G操作系統來支撐。
3,什麼是Docker
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。
Docker的目標:
(1)提供簡單輕量的建模方式
(2)職責的邏輯分離
(3)快速高效的開發生命週期
(4)鼓勵使用面向服務的架構
Docker的使用場景:
(1)使用Docker容器開發、測試、部署服務
(2)創建隔離的運行環境
(3)搭建測試環境
(4)構建多用戶的平臺即服務(PaaS)基礎設施
(5)提供軟件即服務(SaaS)應用程序
(6)高性能、超大規模的宿主機部署
二,Docker的基本組成
1,Docker Client客戶端
2,Docker Daemon守護進程
3,Docker Image鏡像
4,Docker Container容器
5,Docker Registry倉庫
Docker Client客戶端通過發送各種操作命令訪問守護進程,守護進程也將結果反饋到客戶端
Docker Client客戶端訪問守護進程,來操作Docker容器,容器是由鏡像來創建,而鏡像則放在Docker倉庫中。
三,Docker容器相關技術簡介
Namespace命名空間:
1,在編程語言中,它的主要作用是代碼的封裝即代碼隔離。
2,在操作系統系統中,它的主要作用是系統資源的隔離,包括:進程,網絡,文件系統等等。
Docker主要使用的5種命名空間:
(1)PID(Process ID) 進程隔離
(2)NET(Network) 管理網路接口
(3)IPC(InterProcess Communication) 管理跨進程通信的訪問
(4)MNT(Mount) 管理掛載點
(5)UTS(Unix Timesharing System) 隔離內核和版本標識
Control groups控制組提供的功能:
(1)資源限制
(2)優先級設定
(3)資源計量
(4)資源控制
通過以上兩種技術,提供給Docker容器的的能力:
(1)文件系統隔離:每個容器都有自己的root文件系統
(2)進程隔離:每個容器都運行在自己的進程環境中
(3)網路隔離:容器間的虛擬網絡接口和IP地址都是分開的
(4)資源隔離和分組:使用Cgroups將CPU和內存之類的資源獨立分配給每個Docker容器