Docker并不抽象替梨,但是描述起來(lái)很抽象钓试。
首先
暫且不說(shuō)它的底層是如何實(shí)現(xiàn)的。只需要知道它比虛擬機(jī)先進(jìn):
- 快速交付和部署
- 高效虛擬化耙替,更高的性能和效率
- 方便遷徙和擴(kuò)展
- 更簡(jiǎn)單的管理
這里有個(gè)表亚侠,或許可以幫你:
特性 | 容器 | 虛擬機(jī) |
---|---|---|
啟動(dòng) | 秒級(jí) | 分鐘級(jí) |
硬盤使用 | 一般為MB | 一般為GB |
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 單機(jī)支持上千個(gè)容器 | 一般幾十個(gè) |
其次
了解幾個(gè)概念就差不多算入門了:
- 倉(cāng)庫(kù)(Repository)
- 鏡像(Image)
- 容器(Container)
倉(cāng)庫(kù)
倉(cāng)庫(kù)是Image的來(lái)源曹体∷咨龋互聯(lián)網(wǎng)上有很多倉(cāng)庫(kù),有國(guó)內(nèi)的箕别、也有國(guó)外的铜幽,這里我主要說(shuō)說(shuō)正統(tǒng)的——Docker Hub,也是默認(rèn)的串稀,使用的時(shí)候或許需要翻個(gè)小墻除抛。
在你做好一切準(zhǔn)備工作后,只需要docker pull <Image_name>
母截,就可以從Docker Hub上獲取你想要的Image到忽。當(dāng)然準(zhǔn)備工作需要一頓操作,這里不提清寇,可以稍后看看我的另一篇文章喘漏。
鏡像和容器
我打算把這兩個(gè)概念放一塊描述。如果把鏡像當(dāng)成一個(gè)類的話华烟,容器更像是它new出來(lái)的一個(gè)又一個(gè)對(duì)象翩迈。鏡像可以從倉(cāng)庫(kù)中獲取,容器則是從鏡像中生成盔夜。
容器的啟動(dòng)和暫停操作有:docker run <Image>
负饲、docker start <Image>
堤魁、docker restart <Image>
、docker stop <Image>
返十。
再次
讓我闡述一下我對(duì)docker容器本質(zhì)的理解妥泉。
Docker引擎之上可以運(yùn)行很多鏡像從而形成一個(gè)的容器,鏡像包括操作系統(tǒng)洞坑、安裝的軟件涛漂,但形成的容器本質(zhì)上還是基于linux內(nèi)核的。于是检诗,你可以通過(guò)連接容器(docker attach <container>
)運(yùn)行shell指令匈仗。
好吧,我用一個(gè)例子說(shuō)明逢慌。你打算安裝一個(gè)包含nodejs環(huán)境的docker容器悠轩,你可以從docker hub上獲取操作系統(tǒng)(docker pull <Image>
),比如Ubuntu攻泼、CentOS等等火架,然后創(chuàng)建一個(gè)容器(docker run <Image>
),在連接到你的容器忙菠,也就是操作系統(tǒng)里何鸡,就可以進(jìn)行安裝nodejs的操作了,安裝好nodejs后牛欢,你可以通過(guò)掛載途徑把你的nodejs項(xiàng)目放入docker容器里骡男,運(yùn)行shell指令讓項(xiàng)目運(yùn)行起來(lái),測(cè)試無(wú)誤后傍睹,可以通過(guò)遷徙的方法把它部署到其它支持docker環(huán)境上隔盛。
上面的一系列的操作都可以寫進(jìn)一個(gè)Dockerfile的文本里,生成一個(gè)屬于你自己的Image拾稳,分享給其他人吮炕,別人下載到本機(jī)上,可以通過(guò)docker build -t <image_name> .
指令構(gòu)建改docker鏡像到本機(jī)上访得。
最后
不知道你四不四弄清楚或者更了解docker了龙亲。如果沒(méi),推薦一本書給你悍抑;如果弄清楚了鳄炉,分享我自己收集的一份docker指令集給你,有點(diǎn)粗略传趾,因?yàn)檫€沒(méi)有整理好迎膜。