docker
what is docker
- Docker是基于Go語言開發(fā)實現(xiàn)的螃宙,是一種對進(jìn)程進(jìn)行封裝隔離正塌,屬于操作系統(tǒng)層面的虛擬化技術(shù)
- 由于隔離的進(jìn)程獨立于宿主和其它隔離的進(jìn)程笼痹,Docker也因此被稱為容器
The discrimination between virtual machines and docker
- 傳統(tǒng)虛擬機(jī)技術(shù)是虛擬出一套硬件瓤檐,在其運(yùn)行一個完整的操作系統(tǒng)辽剧,然后在這個系統(tǒng)運(yùn)行所需的應(yīng)用進(jìn)程
- Docker的應(yīng)用進(jìn)程是直接運(yùn)行為宿主的內(nèi)核上臂寝,容器內(nèi)沒有自己的內(nèi)核章鲤,更沒有硬件虛擬
-
Docker容器比傳統(tǒng)的虛擬機(jī)更為輕便
The advantage of Docker
- 容器不需要硬件模擬或者運(yùn)行操作系統(tǒng)等額外開外,故相比與傳統(tǒng)的虛擬機(jī)技術(shù)咆贬,一個相同配置的主機(jī)败徊,可以運(yùn)行更多數(shù)量的容器
- 容器直接運(yùn)行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng)掏缎,因此可以做到毫秒級的啟動
- 容器可以提供一致的開發(fā)環(huán)境
- 使用容器可以定制鏡像來實現(xiàn)持續(xù)集成皱蹦,交付和部署
Docker Image
- Docker鏡像(Image),就相當(dāng)于是一個root文件系統(tǒng)
- 鏡像使用的是分層存儲
例如:官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu 16.04 最小系統(tǒng)的 root 文件系統(tǒng)
Docker Container
- 鏡像(Image)和容器(Container)的關(guān)系眷蜈,就相當(dāng)于面向?qū)ο蟪绦蛟O(shè)計的類和實例一樣
- 鏡像是靜態(tài)的定義
- 容器是鏡像運(yùn)行時的實體
- 容器可以被創(chuàng)建沪哺,啟動,停止酌儒,刪除辜妓,暫停等等
- 容器是一個運(yùn)行在隔離環(huán)境下的進(jìn)程,與其它進(jìn)程不同的是,容器可以擁有只屬于自己的root文件系統(tǒng),自己的網(wǎng)絡(luò)配置嫌拣,自己的進(jìn)程空間以及自己的ID空間等等
- 如同鏡像一樣,容器也是使用分層存儲呆躲,每一個容器運(yùn)行時异逐,以鏡像為基礎(chǔ)層,在其上創(chuàng)建一個當(dāng)前容器的存儲層插掂,可稱為容器運(yùn)行時而準(zhǔn)備的存儲層灰瞻,又稱容器存儲層
- 容器消亡時,容器存儲層也隨之消亡辅甥,故酝润,容器不應(yīng)向存儲層寫入任何數(shù)據(jù)需保持無狀態(tài)化
- 所以的文件寫入操作,都應(yīng)該使用數(shù)據(jù)卷,或者綁定宿主目錄,在這些位置的讀寫會跳過容器存儲層璃弄,直接對宿主或者網(wǎng)絡(luò)存儲發(fā)生讀寫
- 容器消亡要销,數(shù)據(jù)卷不會消亡,使用數(shù)據(jù)卷后夏块,容器刪除或者重新運(yùn)行之后疏咐,數(shù)據(jù)不會丟失
Docker Register
- 一個 Docker Registry 中可以包含多個倉庫(Repository)
- 每個倉庫可以包含多個標(biāo)簽(Tag),每個標(biāo)簽對應(yīng)一個鏡像,如版本標(biāo)簽,如果忽略標(biāo)簽脐供,則使用latest作為默認(rèn)標(biāo)簽
- Docker Hub
- 阿里云加速器