DocKer的核心技術與實現是怎樣的

這期內容當中小編將會給大家?guī)碛嘘PDocKer的核心技術與實現是怎樣的,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

從事聯通服務器托管,服務器租用,云主機,網絡空間,域名申請,CDN,網絡代維等服務。

到虛擬化技術,我們首先想到的一定是Docker,經過四年的快速發(fā)展Docker已經成為了很多公司的標配,也不再是一個只能在開發(fā)階段使用的玩具了。作為在生產環(huán)境中廣泛應用的產品,Docker有著非常成熟的社區(qū)以及大量的使用者,代碼庫中的內容也變得非常龐大。

同樣,由于項目的發(fā)展、功能的拆分以及各種奇怪的改名PR,讓我們再次理解Docker的的整體架構變得更加困難。

雖然Docker目前的組件較多,并且實現也非常復雜,但是本文不想過多的介紹Docker具體的實現細節(jié),我們更想談一談Docker這種虛擬化技術的出現有哪些核心技術的支撐。

首先,Docker的出現一定是因為目前的后端在開發(fā)和運維階段確實需要一種虛擬化技術解決開發(fā)環(huán)境和生產環(huán)境環(huán)境一致的問題,通過Docker我們可以將程序運行的環(huán)境也納入到版本控制中,排除因為環(huán)境造成不同運行結果的可能。但是上述需求雖然推動了虛擬化技術的產生,但是如果沒有合適的底層技術支撐,那么我們仍然得不到一個完美的產品。本文剩下的內容會介紹幾種Docker使用的核心技術,如果我們了解它們的使用方法和原理,就能清楚Docker的實現原理。

Namespaces

命名空間(namespaces)是Linux為我們提供的用于分離進程樹、網絡接口、掛載點以及進程間通信等資源的方法。在日常使用Linux或者macOS時,我們并沒有運行多個完全分離的服務器的需要,但是如果我們在服務器上啟動了多個服務,這些服務其實會相互影響的,每一個服務都能看到其他服務的進程,也可以訪問宿主機器上的任意文件,這是很多時候我們都不愿意看到的,我們更希望運行在同一臺機器上的不同服務能做到完全隔離,就像運行在多臺不同的機器上一樣。

在這種情況下,一旦服務器上的某一個服務被入侵,那么入侵者就能夠訪問當前機器上的所有服務和文件,這也是我們不想看到的,而Docker其實就通過Linux的Namespaces對不同的容器實現了隔離。

Linux的命名空間機制提供了以下七種不同的命名空間,包括CLONE_NEWCGROUP、CLONE_NEWIPC、CLONE_NEWNET、CLONE_NEWNS、CLONE_NEWPID、CLONE_NEWUSER和CLONE_NEWUTS,通過這七個選項我們能在創(chuàng)建新的進程時設置新進程應該在哪些資源上與宿主機器進行隔離。

進程

進程是Linux以及現在操作系統(tǒng)中非常重要的概念,它表示一個正在執(zhí)行的程序,也是在現代分時系統(tǒng)中的一個任務單元。在每一個*nix的操作系統(tǒng)上,我們都能夠通過ps命令打印出當前操作系統(tǒng)中正在執(zhí)行的進程。

當前機器上有很多的進程正在執(zhí)行,在上述進程中有兩個非常特殊,一個是pid為1的/sbin/init進程,另一個是pid為2的kthreadd進程,這兩個進程都是被Linux中的上帝進程idle創(chuàng)建出來的,其中前者負責執(zhí)行內核的一部分初始化工作和系統(tǒng)配置,也會創(chuàng)建一些類似getty的注冊進程,而后者負責管理和調度其他的內核進程。

Docker通過Linux的命名空間實現了網絡的隔離,又通過iptables進行數據包轉發(fā),讓Docker容器能夠優(yōu)雅地為宿主機器或者其他容器提供服務。

上述就是小編為大家分享的DocKer的核心技術與實現是怎樣的了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道。

本文題目:DocKer的核心技術與實現是怎樣的
轉載注明:http://muchs.cn/article22/pieecc.html

成都網站建設公司_創(chuàng)新互聯,為您提供虛擬主機、云服務器、建站公司網站設計、電子商務

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

外貿網站制作