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