這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)DocKer的核心技術(shù)與實(shí)現(xiàn)是怎樣的,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
到虛擬化技術(shù),我們首先想到的一定是Docker,經(jīng)過(guò)四年的快速發(fā)展Docker已經(jīng)成為了很多公司的標(biāo)配,也不再是一個(gè)只能在開(kāi)發(fā)階段使用的玩具了。作為在生產(chǎn)環(huán)境中廣泛應(yīng)用的產(chǎn)品,Docker有著非常成熟的社區(qū)以及大量的使用者,代碼庫(kù)中的內(nèi)容也變得非常龐大。
同樣,由于項(xiàng)目的發(fā)展、功能的拆分以及各種奇怪的改名PR,讓我們?cè)俅卫斫釪ocker的的整體架構(gòu)變得更加困難。
雖然Docker目前的組件較多,并且實(shí)現(xiàn)也非常復(fù)雜,但是本文不想過(guò)多的介紹Docker具體的實(shí)現(xiàn)細(xì)節(jié),我們更想談一談Docker這種虛擬化技術(shù)的出現(xiàn)有哪些核心技術(shù)的支撐。
首先,Docker的出現(xiàn)一定是因?yàn)槟壳暗暮蠖嗽陂_(kāi)發(fā)和運(yùn)維階段確實(shí)需要一種虛擬化技術(shù)解決開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境環(huán)境一致的問(wèn)題,通過(guò)Docker我們可以將程序運(yùn)行的環(huán)境也納入到版本控制中,排除因?yàn)榄h(huán)境造成不同運(yùn)行結(jié)果的可能。但是上述需求雖然推動(dòng)了虛擬化技術(shù)的產(chǎn)生,但是如果沒(méi)有合適的底層技術(shù)支撐,那么我們?nèi)匀坏貌坏揭粋€(gè)完美的產(chǎn)品。本文剩下的內(nèi)容會(huì)介紹幾種Docker使用的核心技術(shù),如果我們了解它們的使用方法和原理,就能清楚Docker的實(shí)現(xiàn)原理。
命名空間(namespaces)是Linux為我們提供的用于分離進(jìn)程樹(shù)、網(wǎng)絡(luò)接口、掛載點(diǎn)以及進(jìn)程間通信等資源的方法。在日常使用Linux或者macOS時(shí),我們并沒(méi)有運(yùn)行多個(gè)完全分離的服務(wù)器的需要,但是如果我們?cè)诜?wù)器上啟動(dòng)了多個(gè)服務(wù),這些服務(wù)其實(shí)會(huì)相互影響的,每一個(gè)服務(wù)都能看到其他服務(wù)的進(jìn)程,也可以訪問(wèn)宿主機(jī)器上的任意文件,這是很多時(shí)候我們都不愿意看到的,我們更希望運(yùn)行在同一臺(tái)機(jī)器上的不同服務(wù)能做到完全隔離,就像運(yùn)行在多臺(tái)不同的機(jī)器上一樣。
在這種情況下,一旦服務(wù)器上的某一個(gè)服務(wù)被入侵,那么入侵者就能夠訪問(wèn)當(dāng)前機(jī)器上的所有服務(wù)和文件,這也是我們不想看到的,而Docker其實(shí)就通過(guò)Linux的Namespaces對(duì)不同的容器實(shí)現(xiàn)了隔離。
Linux的命名空間機(jī)制提供了以下七種不同的命名空間,包括CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER和CLONE_NEWUTS,通過(guò)這七個(gè)選項(xiàng)我們能在創(chuàng)建新的進(jìn)程時(shí)設(shè)置新進(jìn)程應(yīng)該在哪些資源上與宿主機(jī)器進(jìn)行隔離。
進(jìn)程是Linux以及現(xiàn)在操作系統(tǒng)中非常重要的概念,它表示一個(gè)正在執(zhí)行的程序,也是在現(xiàn)代分時(shí)系統(tǒng)中的一個(gè)任務(wù)單元。在每一個(gè)*nix的操作系統(tǒng)上,我們都能夠通過(guò)ps命令打印出當(dāng)前操作系統(tǒng)中正在執(zhí)行的進(jìn)程。
當(dāng)前機(jī)器上有很多的進(jìn)程正在執(zhí)行,在上述進(jìn)程中有兩個(gè)非常特殊,一個(gè)是pid為1的/sbin/init進(jìn)程,另一個(gè)是pid為2的kthreadd進(jìn)程,這兩個(gè)進(jìn)程都是被Linux中的上帝進(jìn)程idle創(chuàng)建出來(lái)的,其中前者負(fù)責(zé)執(zhí)行內(nèi)核的一部分初始化工作和系統(tǒng)配置,也會(huì)創(chuàng)建一些類似getty的注冊(cè)進(jìn)程,而后者負(fù)責(zé)管理和調(diào)度其他的內(nèi)核進(jìn)程。
Docker通過(guò)Linux的命名空間實(shí)現(xiàn)了網(wǎng)絡(luò)的隔離,又通過(guò)iptables進(jìn)行數(shù)據(jù)包轉(zhuǎn)發(fā),讓Docker容器能夠優(yōu)雅地為宿主機(jī)器或者其他容器提供服務(wù)。
上述就是小編為大家分享的DocKer的核心技術(shù)與實(shí)現(xiàn)是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站題目:DocKer的核心技術(shù)與實(shí)現(xiàn)是怎樣的-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://www.chinadenli.net/article28/dhidjp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)頁(yè)設(shè)計(jì)公司、網(wǎng)站策劃、App設(shè)計(jì)、網(wǎng)站排名、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容