为何要使用docker
可能很多人聽(tīng)說(shuō)過(guò)docker,也可能有很多人用過(guò),但是其中的一些細(xì)節(jié),可能不是很清楚,還有一些人,像我一樣,并不知道docker,也沒(méi)有用過(guò),剛好最近一個(gè)大神朋友比較有空,讓他寫了一篇普及文章,希望能解答像我這樣小白的疑問(wèn)。
作者:Xx
小編了解到很多同學(xué)聽(tīng)過(guò)docker,認(rèn)為docker是個(gè)高大上的東西,但是不清楚為何要使用docker,通過(guò)本文可以從入門的角度了解為何要使用docker。
我們先看一個(gè)簡(jiǎn)單的從硬件到軟件的層次示意圖,最底層是硬件,最上層是應(yīng)用軟件,OS負(fù)責(zé)硬件管理并銜接軟硬件。
? ? ?
? ? ? ? ?
有部分同學(xué)還玩過(guò)虛擬機(jī),其軟件示意圖如下,在host os上將硬件虛擬化提供給多個(gè)guest os使用,舉個(gè)通俗的例子,我是個(gè)苦逼碼農(nóng),口袋不太鼓,只有一臺(tái)PC,想要學(xué)習(xí)下linux,但是PC現(xiàn)在是win10系統(tǒng),那我們?cè)趙in10系統(tǒng)下用vmware安裝個(gè)linux的虛擬機(jī),或者安裝幾個(gè)虛擬機(jī)都可以(只要電腦CPU、內(nèi)存、硬盤配置能抗住),每個(gè)linux虛擬機(jī)有個(gè)root用戶,從全局看,就是多個(gè)root用戶在使用同一臺(tái)電腦,但是對(duì)于1個(gè)root用戶而言,他擁有整個(gè)電腦,所以虛擬機(jī)是將電腦的硬件資源虛擬化,實(shí)現(xiàn)多用戶對(duì)同一硬件資源的共享,提升硬件利用率。在此例中win10就是host os,linux是guest os,VMware負(fù)責(zé)提供硬件虛擬化能力。
? ? ? ? ? ? ? ? ?
? ? ?
基于上述的知識(shí),引申出docker,顧名思義,docker就是個(gè)容器,這個(gè)容器里盛放的是應(yīng)用,不是虛擬硬件資源,而是實(shí)現(xiàn)軟件資源的虛擬化,說(shuō)白了就是對(duì)os軟件環(huán)境的虛擬化,是為了解決用戶多個(gè)軟件對(duì)環(huán)境的依賴。(注意這點(diǎn),虛擬機(jī)是對(duì)硬件的虛擬化,是解決多個(gè)用戶對(duì)硬件資源的依賴)
舉個(gè)例子:還是延續(xù)上面的例子,有多個(gè)linux虛擬機(jī),假設(shè)我要在linux上安裝軟件A和B,A和B都依賴一個(gè)名為C的庫(kù),但是A軟件比較挫,依賴1.0版本的C軟件,但是B軟件很新,必須依賴10.0版本的C軟件,當(dāng)然我們可以在liunx虛擬機(jī)中同時(shí)安裝1.0版本和10.0版本的C軟件,但是會(huì)引發(fā)很多的軟件沖突,甚至如果C軟件根本就沒(méi)考慮高低版本之間的共存,同時(shí)安裝兩個(gè)版本的C,甚至都無(wú)法運(yùn)行,這時(shí)候怎么辦?將A和B軟件的運(yùn)行環(huán)境隔離,有兩種方式,第一種就是A和B分別安裝在不同的虛擬機(jī)中,這種方式不是本文重點(diǎn);第二種就是在同一個(gè)虛擬機(jī)中采用2個(gè)docker容器,把A、B軟件的運(yùn)行環(huán)境分離。在容器1中安裝A軟件和1.0版本的C軟件,在容器2中安裝B軟件和10.0版本的C軟件。容器1和容器2最終都都通過(guò)docker軟件調(diào)用linux的os接口。軟件層次如下圖所示,這個(gè)圖比較復(fù)雜,虛擬機(jī)VM個(gè)數(shù)可以為n個(gè),n是由用戶個(gè)數(shù)決定的,但如果只有1個(gè)用戶可以只用1個(gè)vm。
? ? ? ? ? ? ? ?
? ?
實(shí)際如果只有一個(gè)用戶,那么也可以不需要虛擬機(jī)vm,直接在host os上安裝docker,構(gòu)造多個(gè)容器來(lái)隔離應(yīng)用A和應(yīng)用B的運(yùn)行環(huán)境,如下圖所示
? ? ? ? ? ? ? ? ? ? ? ?
從這兩個(gè)圖看來(lái),docker就是個(gè)提供軟件環(huán)境虛擬化的軟件,并沒(méi)有限制是在host os還是guest中使用,至于你為何要使用docker,那就是隔離軟件應(yīng)用。
最后,使用docker還能夠很方便的發(fā)布image等等,但這些都是在使用docker以后的副作用(好的副作用),歸根結(jié)底是要明白,為什么要使用docker。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的为何要使用docker的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Hadoop环境搭建(全网最详细,保姆级
- 下一篇: 上海富勒wms_【3PL | 宝时物流应