這篇文章將為大家詳細(xì)講解有關(guān)docker的歷史與現(xiàn)狀及原理與概念是什么,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
創(chuàng)新互聯(lián)是少有的成都網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、營(yíng)銷型企業(yè)網(wǎng)站、微信小程序定制開(kāi)發(fā)、手機(jī)APP,開(kāi)發(fā)、制作、設(shè)計(jì)、買友情鏈接、推廣優(yōu)化一站式服務(wù)網(wǎng)絡(luò)公司,從2013年開(kāi)始,堅(jiān)持透明化,價(jià)格低,無(wú)套路經(jīng)營(yíng)理念。讓網(wǎng)頁(yè)驚喜每一位訪客多年來(lái)深受用戶好評(píng)
1.docker的歷史與現(xiàn)狀分析
老一代PASS平臺(tái)的局限性和困境:
主要提供應(yīng)用部署和托管,針對(duì)應(yīng)用開(kāi)發(fā)者,僅支持特定的LAAS基礎(chǔ)技術(shù),支持單種開(kāi)發(fā)語(yǔ)言和框架,支持特定服務(wù),如自定義的數(shù)據(jù)存儲(chǔ)APIs,沒(méi)有很好的解決常用中間件的部署問(wèn)題,難以解決應(yīng)用和資源的隔離問(wèn)題。
新一代PAAS平臺(tái):
全方位應(yīng)用生命周期管理,關(guān)注開(kāi)放性,應(yīng)用的可移植性和云間相互操作性,代表包括Cloud Foundry, OpenShift, Docker, Heroku, MoPass等技術(shù)或服務(wù),具備以下大多數(shù)特征(多語(yǔ)言和框架,多服務(wù),多云和多l(xiāng)aaS技術(shù))
docker被稱為第三代Paas平臺(tái)。
docker于2013.3.27正式發(fā)布,github上貢獻(xiàn)增長(zhǎng)迅猛,2013.10dotCloud公司改名docker。
2.docker的技術(shù)原理介紹
docker是虛擬化的一種輕量級(jí)替代技術(shù)。docker容器不依賴于任何語(yǔ)言、框架或系統(tǒng) ,可以將APP變成一種標(biāo)準(zhǔn)化的可移植的自管理的組件,并脫離服務(wù)器硬件在任何主流系統(tǒng)中開(kāi)發(fā)調(diào)試和運(yùn)行。
在linux系統(tǒng)上迅速創(chuàng)建一個(gè)容器并在容器上部署和運(yùn)行應(yīng)用程序,并通過(guò)配置文件可以輕松實(shí)現(xiàn)應(yīng)用程序的自動(dòng)化安裝 、部署和升級(jí),非常方便??梢院芊奖愕陌焉a(chǎn)和開(kāi)發(fā)環(huán)境分開(kāi)。
docker核心技術(shù):cgroups
cgroups就是 controller group, linux系統(tǒng)中經(jīng)常有個(gè)需求希望能限制某個(gè)或某些進(jìn)程的分配資源。于是出是cgroups概念,在這個(gè)group中, 有分配好的特定比例的cpu時(shí)間,IO時(shí)間, 可用內(nèi)存大小等。cgroups是將任意進(jìn)程進(jìn)行分組 化管理的linux內(nèi)核功能。由google工程師提出,后來(lái)整合進(jìn)linux內(nèi)核。
docker核心技術(shù):LXC
LXC是linux container的簡(jiǎn)稱,是一種基于容器的操作系統(tǒng)層級(jí)的虛擬化技術(shù)。借助于namespace的隔離機(jī)制和cgroups的限額功能,lxc提供了一套統(tǒng)一的API和工具來(lái)建立和管理container。LXC跟其他 操作系統(tǒng) 層次的虛擬技術(shù)相比,最大的優(yōu)勢(shì)是LXC被整合進(jìn)內(nèi)核,不用單獨(dú)為內(nèi)核打補(bǔ)丁。
LXC旨在提供一個(gè)共享kernel的OS級(jí)虛擬化方法,在執(zhí)行時(shí)不用重復(fù)加載kernel,且container的kernel與host共享,因此大加快container的啟動(dòng)過(guò)程,并顯著減少內(nèi)存消耗,還通過(guò)共享資源 節(jié)省資源開(kāi)銷,意味著容器化比真正的虛擬化的開(kāi)銷要小得多。在實(shí)際測(cè)試中,基于LXC的虛擬化方法的IO和CPU性能幾乎接近baremetal的性能。但如果內(nèi)核停止,所有容器都會(huì)停止運(yùn)行。
docker核心技術(shù):AUFS
AuFS是一個(gè)能透明覆蓋一個(gè)或多個(gè)現(xiàn)有文件系統(tǒng)的層狀文件系統(tǒng).支持將不同目錄掛載到同一個(gè)虛擬文件系統(tǒng)下,可以把不同的目錄聯(lián)合在一起,組成一個(gè)單一的目錄。這是一種虛擬的文件 系統(tǒng),文件 系統(tǒng)不用格式化,直接掛載即可.
docker一直在用AuFS作為容器的文件系統(tǒng)。當(dāng)一個(gè)進(jìn)程需要修改一個(gè)文件 時(shí),AuFS創(chuàng)建該文件的一個(gè)副本。AuFS可以把多層合并 成文件 系統(tǒng) 的單層表示。這個(gè)過(guò)程稱為寫入復(fù)制。
AuFS允許docker把某些鏡像作為容器的基礎(chǔ)??梢怨?jié)省存儲(chǔ)和內(nèi)存,也保證更快速的容器部署。
使用AuFS的另一個(gè)好處是docker的版本容器鏡像能力。
docker原理:APP打包
LXC的基礎(chǔ)上,docker額外提供的功能包括標(biāo)準(zhǔn)統(tǒng)一的打包部署方案。為最大化重用image, 加快運(yùn)行速度,減少內(nèi)存和磁盤footprint, docker container運(yùn)行時(shí)所構(gòu)造的運(yùn)行環(huán)境,實(shí)際 上是由具有依賴關(guān)系的多個(gè)layer組成的。有了層級(jí)化的image做基礎(chǔ),不同APP就可以共用底層文件 系統(tǒng)、相關(guān)依賴工具等,同一個(gè)APP的不同實(shí)例也可以實(shí)現(xiàn)共用絕大多數(shù)數(shù)據(jù),進(jìn)而以copy on write的形式維護(hù)自己修改過(guò)的那份數(shù)據(jù)等。
docker全生命周期開(kāi)發(fā)模式:
docker正在迅速改變?cè)朴?jì)算領(lǐng)域的運(yùn)作規(guī)則,從持續(xù)集成/持續(xù)交付到微服務(wù)、開(kāi)源協(xié)作,到DevOps, docker已經(jīng)給應(yīng)用程序開(kāi)發(fā)生命周期及云工程計(jì)算實(shí)踐帶來(lái)了巨大變革。
3. docker 的基本概念
docker image :
docker image是一個(gè)極度精簡(jiǎn)版的linux程序運(yùn)行環(huán)境。docker image是需要定制化build的一個(gè)“安裝 包”, 包括基礎(chǔ)鏡像 + 應(yīng)用的二進(jìn)制部署包。docker image內(nèi)不建議有運(yùn)行期需要修改的配置文件。
dockerfile用來(lái)創(chuàng)建一個(gè)自定義的image, 包含了用戶指定的軟件依賴等。docker iamges的最佳實(shí)踐之一是盡量重用和使用網(wǎng)上公司的鏡像。
docker container:
docker container是image的實(shí)例,共享內(nèi)核。docker container里可以運(yùn)行不同OS的image,如ubuntu或centos。docker1.3新增docker exec命令進(jìn)入容器排查問(wèn)題。docker container沒(méi)有IP 地址,通常不會(huì)有服務(wù)端口暴露,是一個(gè)封閉的盒子/沙箱。
docker 生命周期:
Docker daemon:
docker daemon是創(chuàng)建和運(yùn)行container的linux守護(hù)進(jìn)程,也是docker最主要的核心組件。docker daemon可以綁定本地端口并提供rest api服務(wù),用來(lái)遠(yuǎn)程訪問(wèn)和控制。
Docker registry/hub:
關(guān)于docker的歷史與現(xiàn)狀及原理與概念是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。