摘要:獲取阿里云加速器地址進(jìn)入登錄阿里云進(jìn)入后臺(tái)配置加速器點(diǎn)擊后就會(huì)重啟并應(yīng)用配置的鏡像地址了檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請(qǐng)手動(dòng)檢查加速器配置是否生效,在命令行執(zhí)行,如果從結(jié)果中看到了如下內(nèi)容,說(shuō)明配置成功。
一、為什么要使用Docker以及與虛擬機(jī)的區(qū)別? 1.1 為什么要使用Docker
Docker的思想來(lái)自于集裝箱。
集裝箱解決了什么問(wèn)題?在一艘大船上,可以把貨物規(guī)整的擺放起來(lái)。并且各種各樣的貨物被集裝箱標(biāo)準(zhǔn)化了,集裝箱和集裝箱之間不會(huì)互相影響。那么我就不需要專(zhuān)門(mén)運(yùn)送水果的船和專(zhuān)門(mén)運(yùn)送化學(xué)品的船了。只要這些貨物在集裝箱里封裝的好好的,那我就可以用一艘大船把他們都運(yùn)走。
可是這個(gè)箱子為什么這么神奇呢?無(wú)非就是兩個(gè)字:標(biāo)準(zhǔn)。
是的!標(biāo)準(zhǔn)!標(biāo)準(zhǔn)!標(biāo)準(zhǔn)!
按照這個(gè)思路,docker 其實(shí)跟集裝箱一樣,或者說(shuō)它想跟集裝箱一樣,成為“標(biāo)準(zhǔn)化”。
這就是 docker 的實(shí)質(zhì):標(biāo)準(zhǔn)化。
Docker帶來(lái)了哪些好處
粗略來(lái)說(shuō),Docker好處有:
1.保證了線(xiàn)上線(xiàn)下環(huán)境的一致性。我們?cè)诰€(xiàn)下的開(kāi)發(fā)環(huán)境使用Docker構(gòu)建好weaapp的鏡像后,可以直接在線(xiàn)上使用一個(gè)鏡像,保證了線(xiàn)上線(xiàn)下環(huán)境的一致性,再也不會(huì)有在線(xiàn)下開(kāi)發(fā)環(huán)境中運(yùn)行正常,而部署到線(xiàn)上各種錯(cuò)誤了。
2.極大的簡(jiǎn)化了webapp的部署流程。在不使用Docker時(shí),我們部署app時(shí),要先搭建好app運(yùn)行所需環(huán)境,這個(gè)過(guò)程做過(guò)的人都知道多么枯燥繁瑣,一不小心還出錯(cuò)。而有了Docker,我們只需要直接構(gòu)建一個(gè)我們webapp的鏡像然后將其運(yùn)行即可,無(wú)論在多少臺(tái)服務(wù)器中部署,都是如此。再比如,使用Docker之前要搭建一個(gè)WordPress對(duì)于新手來(lái)說(shuō)是有些困難的,而有了Docker,只需要從DockerHub上pull一個(gè)WordPress鏡像并啟動(dòng)就可以了,非常非常方便。
3.實(shí)現(xiàn)了沙盒機(jī)制,提高了安全性。由于webapp運(yùn)行在容器中,與操作系統(tǒng)隔離開(kāi)了,從而使操作系統(tǒng)基本不可能受到破壞,另外如果webapp因?yàn)楣舳c瘓,并不需要重啟服務(wù)器,直接重啟容器或者再啟動(dòng)一個(gè)鏡像就可以了。
4.實(shí)現(xiàn)了模塊化,提高了復(fù)用性。在二中使用Docker的第二種方式就可以看出,我們將數(shù)據(jù)庫(kù)和Tomcat運(yùn)行在不同的容器中,從某種角度來(lái)說(shuō),這也降低了模塊之間的耦合性,便于拓展。比如我們要把MySQL替換為oracle,只需要再構(gòu)建一個(gè)oracle鏡像并啟動(dòng)與Tomcat連接即可,非常方便。對(duì)于我們構(gòu)建的鏡像,在其他app中直接拿來(lái)用就可以了,不必重復(fù)勞動(dòng)。
設(shè)想一個(gè)如下場(chǎng)景:
我們需要一個(gè)webapp,其功能是用戶(hù)注冊(cè)并將注冊(cè)信息插入到數(shù)據(jù)庫(kù),環(huán)境為Ubuntu+Tomcat+Mysql,怎么做?不使用Docker的話(huà),我們通常會(huì)這樣做,以Ubuntu為操作系統(tǒng),然后安裝Tomcat和MySQL,最后把a(bǔ)pp部署上就可以了。那么使用Docker會(huì)怎么做呢,在這個(gè)場(chǎng)景下,可以有兩種方式:1.仍然以Ubuntu為操作系統(tǒng),然后構(gòu)建一個(gè)安裝有MySQL和Tomcat的Docker鏡像,并把a(bǔ)pp部署到其中,最后啟動(dòng)Docker鏡像就可以了??雌饋?lái)好像和不使用Docker基本相同,甚至還要麻煩一些,是這樣嗎?別著急,繼續(xù)往下看。2.第二種方式則體現(xiàn)了Docker的"每個(gè)容器只做一件事情"的思想,我們構(gòu)建兩個(gè)鏡像,一個(gè)僅安裝Tomcat并部署我們的app,另一個(gè)僅安裝MySQL,然后啟動(dòng)這兩個(gè)鏡像,得到兩個(gè)容器,再利用Docker的容器互聯(lián)技術(shù)將二者連接(Docker的容器是通過(guò)http連接的)。
5.實(shí)現(xiàn)了虛擬化,提高硬件利用率。有了Docker,我們可以在一臺(tái)服務(wù)器上運(yùn)行很多webapp,充分利用閑置資源。這時(shí)候,服務(wù)器的操作系統(tǒng)就類(lèi)似于貨輪,而一個(gè)個(gè)Docker容器就相當(dāng)于貨輪上的一個(gè)個(gè)集裝箱?,F(xiàn)在大熱的云服務(wù)市場(chǎng),不少就用了Docker。舉個(gè)例子來(lái)說(shuō),現(xiàn)在我們有一臺(tái)操作系統(tǒng)為Ubuntu14.04的服務(wù)器,我們構(gòu)建不同版本的ubuntu鏡像并啟動(dòng),并且為不同的用戶(hù)分配不同的容器。這樣,用一臺(tái)服務(wù)器可以虛擬出n個(gè)運(yùn)行著不同操作系統(tǒng)的虛擬服務(wù)器,而對(duì)于用戶(hù)來(lái)說(shuō),這些是透明的––用戶(hù)則認(rèn)為自己擁有一臺(tái)完整的服務(wù)器。據(jù)我推測(cè),阿里云的服務(wù)器就是這么干的。這充分利用了閑置的硬件資源。
總結(jié):
????Docker背后的想法是創(chuàng)建軟件程序可移植的輕量級(jí)容器,讓其可以在任何安裝了Docker的機(jī)器上運(yùn)行,并不用關(guān)心底層操作系統(tǒng),就像野心勃勃的造船者們成功創(chuàng)建了集裝箱而不需要考慮裝在哪種船舶上一樣。
????只有一個(gè)共同目標(biāo):簡(jiǎn)化部署流程,提高生產(chǎn)力!
參考:如何通俗解釋Docker是什么?
1.2 Docker和虛擬機(jī)的區(qū)別Docker基于LXC(Linux容器),在LXC的基礎(chǔ)上進(jìn)一步封裝,使得操作更簡(jiǎn)單,就像操作一個(gè)輕量級(jí)的虛擬機(jī)一樣。
先上圖,vm與docker框架,直觀(guān)上來(lái)講vm多了一層guest OS,同時(shí)Hypervisor會(huì)對(duì)硬件資源進(jìn)行虛擬化,docker直接使用硬件資源,所以資源利用率相對(duì)docker低也是比較容易理解的
一個(gè)IBM測(cè)試案例,關(guān)于計(jì)算能力的,對(duì)于kvm為什么會(huì)有這么大的性能損失,一方面是因?yàn)樘摂M機(jī)增加了一層虛擬硬件層,運(yùn)行在虛擬機(jī)上的應(yīng)用程序在進(jìn)行數(shù)值計(jì)算時(shí)是運(yùn)行在Hypervisor虛擬的CPU上的;另外一方面是由于計(jì)算程序本身的特性導(dǎo)致的差異。虛擬機(jī)虛擬的cpu架構(gòu)不同于實(shí)際cpu架構(gòu),數(shù)值計(jì)算程序一般針對(duì)特定的cpu架構(gòu)有一定的優(yōu)化措施,虛擬化使這些措施作廢,甚至起到反效果。
參考:docker與虛擬機(jī)性能比較
總結(jié):
二、使用Docker的正確姿勢(shì)集裝箱:程序部署,保證運(yùn)行環(huán)境不會(huì)出錯(cuò)。
標(biāo)準(zhǔn)化:
(1)運(yùn)輸方式:QQ/郵件==>>從倉(cāng)庫(kù)(hub.docker.com)獲取。
(2)存儲(chǔ)方式:應(yīng)用程序。
(3)API接口:REST api接口,統(tǒng)一控制所有應(yīng)用。
隔離:Linux內(nèi)核限制機(jī)制LXC。LXC是一種內(nèi)核虛擬化技術(shù),可以提供輕量級(jí)的虛擬化,以便隔離進(jìn)程和資源。
三、Docker項(xiàng)目架構(gòu)????Docker使用C/S架構(gòu),通過(guò)docker客戶(hù)端連接到Docker服務(wù)器上從而管理Docker服務(wù)器里面的鏡像和容器,類(lèi)似于git的架構(gòu)。
四、三個(gè)核心概念:鏡像、容器、倉(cāng)庫(kù)三個(gè)Docker基本概念
Image(鏡像):類(lèi)似于模板,包含軟件運(yùn)行環(huán)境和代碼。例如包含完整的CentOS系統(tǒng),并安裝了JRE。鏡像用于創(chuàng)建Docker容器,鏡像本身是只讀的。
Container(容器):Docker利用容器來(lái)運(yùn)行應(yīng)用,容器是從鏡像創(chuàng)建的運(yùn)行實(shí)例。它可以被啟動(dòng)、停止、刪除,每個(gè)容器相互隔離。
Repository(倉(cāng)庫(kù)): 幾種存放Docker鏡像的場(chǎng)所。最大的倉(cāng)庫(kù)未Dockey Hub,國(guó)內(nèi)網(wǎng)易蜂巢:https://c.163.com等。一個(gè)倉(cāng)庫(kù)包含多個(gè)鏡像。倉(cāng)庫(kù)可以分為私有和共有。私有的倉(cāng)庫(kù)可以push和pull。倉(cāng)庫(kù)注冊(cè)服務(wù)器(Registry)往往包含多個(gè)倉(cāng)庫(kù)。
Build-構(gòu)建鏡像 - 集裝箱 - 鏡像
Ship-運(yùn)輸鏡像(從倉(cāng)庫(kù)和我們的主機(jī)上運(yùn)輸)- 碼頭 - 倉(cāng)庫(kù)
Run- 運(yùn)行鏡像(運(yùn)行的鏡像就是一個(gè)容器,可以當(dāng)成一個(gè)“虛擬機(jī)”) - 運(yùn)行程序的地方 - 容器
docker鏡像文件都是只讀的,只有最上層是可以寫(xiě)
容器的本質(zhì)是一個(gè)進(jìn)程。
Docker系統(tǒng)有兩個(gè)程序:docker服務(wù)端和docker客戶(hù)端。其中docker服務(wù)端是一個(gè)服務(wù)進(jìn)程,管理著所有的容器。docker客戶(hù)端則扮演著docker服務(wù)端的遠(yuǎn)程控制器,可以用來(lái)控制docker的服務(wù)端進(jìn)程。大部分情況下,docker服務(wù)端和客戶(hù)端運(yùn)行在一臺(tái)機(jī)器上。
檢查docker的版本,這樣可以用來(lái)確認(rèn)docker服務(wù)在運(yùn)行并可通過(guò)客戶(hù)端鏈接。
$docker version五、鏡像加速
????鑒于國(guó)內(nèi)網(wǎng)絡(luò)問(wèn)題,后續(xù)拉取 Docker 鏡像十分緩慢,強(qiáng)烈建議安裝 Docker 之后配置 國(guó)內(nèi)鏡像加速。
5.1 獲取阿里云加速器地址1.進(jìn)入http://dev.aliyun.com
2.登錄阿里云進(jìn)入后臺(tái)
點(diǎn)擊?Apply&Restart?后 Docker 就會(huì)重啟并應(yīng)用配置的鏡像地址了
5.3 檢查加速器是否生效配置加速器之后,如果拉取鏡像仍然十分緩慢,請(qǐng)手動(dòng)檢查加速器配置是否生效,在命令行執(zhí)行?docker info,如果從結(jié)果中看到了如下內(nèi)容,說(shuō)明配置成功。
【下一篇:Docker簡(jiǎn)介、常用命令與實(shí)踐(二)】參考教程:Docker之編程環(huán)境應(yīng)用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27455.html
摘要:上一篇簡(jiǎn)介常用命令與實(shí)踐一六鏡像操作獲取鏡像下載鏡像到本地上有大量的高質(zhì)量的鏡像可以用,這里我們就說(shuō)一下怎么獲取這些鏡像。 【上一篇:Docker簡(jiǎn)介、常用命令與實(shí)踐(一)】 六、Docker鏡像操作 6.1 獲取鏡像(下載鏡像到本地) Docker Hub?上有大量的高質(zhì)量的鏡像可以用,這里我們就說(shuō)一下怎么獲取這些鏡像。從 Docker 鏡像倉(cāng)庫(kù)獲取鏡像的命令是?docker pul...
摘要:由于支持在鏡像的基礎(chǔ)上進(jìn)行定制,使得擴(kuò)展變得更簡(jiǎn)單。而官方也維護(hù)了一大批高質(zhì)量的鏡像,大大降低了鏡像的制作成本基本概念倉(cāng)庫(kù)提供了倉(cāng)庫(kù)用于存放制作好的鏡像,方便使用者獲取,在本地可通知配置多個(gè)。 Docker 是使用 GoLang 開(kāi)發(fā)的開(kāi)源容器引擎,可以方便的打包開(kāi)發(fā)好的應(yīng)用,然后分發(fā)到任意 linux 主機(jī)上。 與傳統(tǒng)的虛擬機(jī)相比擁有以下優(yōu)勢(shì): 高效的系統(tǒng)資源利用率由于不需要進(jìn)行硬...
閱讀 2511·2021-10-14 09:42
閱讀 1148·2021-09-22 15:09
閱讀 3556·2021-09-09 09:33
閱讀 3037·2021-09-07 09:59
閱讀 3651·2021-09-03 10:34
閱讀 3552·2021-07-26 22:01
閱讀 2836·2019-08-30 13:06
閱讀 1217·2019-08-30 10:48