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