什么是Docker
我的理解就是一個更輕量級的虛擬機燥爷,跟虛擬機的不同在于Docker是直接構(gòu)建在HostOS上,利用HostOS的內(nèi)核運行自己的進程,而虛擬機則是要先虛擬出一套硬件边锁,然后再在這套虛擬出來的硬件上構(gòu)建自己的OS(所以在用VMWare裝虛擬機的時候我們可以自己去設(shè)置CPU、內(nèi)存、硬盤大屑鼋 )酱畅,所以比起虛擬機,Docker更加輕便江场。
為什么用docker
- 資源利用率高
因為docker的輕便性纺酸,所以省掉了比如虛擬硬件、構(gòu)建完整操作系統(tǒng)等開銷址否,一臺機器可以跑很多個docker - 啟動快
- 一致的運行環(huán)境
可以通過docker構(gòu)建開發(fā)環(huán)境餐蔬,保證代碼運行環(huán)境的一致 - 輕松的遷移、維護和擴展
一個關(guān)于docker和虛擬機的總結(jié)
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬盤使用 | MB | GB |
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 上千 | 幾十個 |
Docker基本概念——鏡像
Docker鏡像相當(dāng)于Linux的root文件系統(tǒng)佑附,這個root文件系統(tǒng)大概理解成一個初始化的地方樊诺,系統(tǒng)初啟的時候會從root文件系統(tǒng)讀取各種配置服務(wù)之類的。
Docker鏡像不包含任何動態(tài)數(shù)據(jù)音同,內(nèi)容在構(gòu)建之后也不會變化
(就跟我們下載的操作系統(tǒng)iso類似词爬?總之就是read-only的)
Docker的鏡像是基于分層文件系統(tǒng)的,也就是一層一層構(gòu)建好的权均,每一層構(gòu)建好之后就不會變化顿膨,就算后面對其修改那也算是下一層的記錄(跟iso還是不一樣的,鏡像是一個虛擬概念叽赊,不是由文件構(gòu)成恋沃,而是由一組文件系統(tǒng)構(gòu)成)
Docker基本概念——容器
容器是鏡像的實例化,就跟類和對象的關(guān)系一樣必指。容器是鏡像運行的實體囊咏,可以運行,暫停和刪除等。容器基于進程匆笤,有自己的rootfs研侣,運行在一個隔離的空間,所以很多資源都是獨立的炮捧。
容器和鏡像一樣也是分層存儲庶诡,容器以鏡像為基礎(chǔ)構(gòu)建,這個鏡像稱為基礎(chǔ)層咆课,往上是一個容器存儲層末誓,用來存儲容器運行時的數(shù)據(jù),這一層生命周期和容器一致书蚪,容器關(guān)閉的時候就沒了喇澡。
一般來說不要往容器存儲層寫數(shù)據(jù),因為不能持久化殊校。(一般選擇數(shù)據(jù)卷(volume)或者綁定宿主目錄)
Docker倉庫
我的理解是Docker Registry類似Github這樣的東西晴玖?一個Registry包含多個倉庫(Repository),每個倉庫又有多個標(biāo)簽(tag)为流,每個tag就是一個鏡像呕屎,所以訪問一個鏡像的格式就是:<repository>:<tag>,不給出標(biāo)簽則默認為latest敬察。