Docker系列(一):Docker介紹-創(chuàng)新互聯(lián)

Docker的定義:

創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比襄城網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式襄城網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋襄城地區(qū)。費(fèi)用合理售后完善,10年實(shí)體公司更值得信賴。

    Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上,也可以實(shí)現(xiàn)虛擬化。容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。    --摘自《百度百科》

    實(shí)際上,雖然介紹docker的書(shū)籍有很多,但鮮有給docker一個(gè)明確的定義,因?yàn)樗茈y概括成一個(gè)概念,而應(yīng)該更多的被闡述它的特性和技術(shù)范疇。綜合一些網(wǎng)上的觀點(diǎn),Docker就是虛擬化的一種輕量級(jí)替代技術(shù)。這種技術(shù)不依賴任何語(yǔ)言、框架或系統(tǒng),可以將App變成一種標(biāo)準(zhǔn)化的、可移植的、自管理的組件,并脫離服務(wù)器硬件在任何主流系統(tǒng)中開(kāi)發(fā)、調(diào)試和運(yùn)行。

    簡(jiǎn)單的說(shuō)就是,在 Linux 系統(tǒng)上迅速創(chuàng)建一個(gè)容器(類似虛擬機(jī))并在容器上部署和運(yùn)行應(yīng)用程序,并通過(guò)配置文件可以輕松實(shí)現(xiàn)應(yīng)用程序的自動(dòng)化安裝、部署和升級(jí),非常方便。因?yàn)槭褂昧巳萜鳎钥梢院芊奖愕陌焉a(chǎn)環(huán)境和開(kāi)發(fā)環(huán)境分開(kāi),互不影響,這是 docker 最普遍的一個(gè)玩法

Docker核心技術(shù):

    Namespace是一種Linux內(nèi)核技術(shù),用來(lái)實(shí)現(xiàn)資源的隔離。資源,就是進(jìn)程運(yùn)行期間所看到的、使用的、依賴的周邊環(huán)境,資源有不同的種類,最典型的就是文件系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、進(jìn)程PID、IPC資源等等。

    Namespaces命名空間:

        PID  進(jìn)程隔離

        NET  管理網(wǎng)絡(luò)接口

        IPC  管理跨進(jìn)程通信的訪問(wèn) InterProcess Communication

        MNT 管理掛載點(diǎn)

        UTS  隔離內(nèi)核和版本標(biāo)識(shí) Unix Timesharing System

    對(duì)于用戶態(tài)進(jìn)程,通過(guò)Linux提供的系統(tǒng)調(diào)用來(lái)使用Namespace,這些系統(tǒng)調(diào)用包括:

        clone()   創(chuàng)建進(jìn)程的時(shí)候,將其限制在某個(gè)Namespace中

        unshare() 使一個(gè)進(jìn)程脫離某個(gè)Namespace

        setns()    使一個(gè)進(jìn)程加入到某個(gè)Namespace

     CGroup最早叫做Process Container,由Google工程師在2006年提出,后在2007年更名為Control Groups,并被整合進(jìn)Linux 2.6.24版內(nèi)核。它用來(lái)對(duì)一組進(jìn)程進(jìn)行資源控制,包括如下功能:

     資源限制(Resource Limitation):對(duì)進(jìn)程組使用的資源總額進(jìn)行限制

     優(yōu)先級(jí)控制(Prioritization):通過(guò)為進(jìn)程組分配CPU時(shí)間片數(shù)量從而控制了進(jìn)程運(yùn)行的優(yōu)先級(jí)

     資源統(tǒng)計(jì)(Accounting):統(tǒng)計(jì)系統(tǒng)的資源使用量,如CPU使用時(shí)長(zhǎng)、內(nèi)存用量等等

     進(jìn)程控制(Control):對(duì)進(jìn)程組執(zhí)行掛起、恢復(fù)等操作

     CGroup包括如下概念:

        任務(wù)(Task):一個(gè)Task就是Linux系統(tǒng)中的一個(gè)進(jìn)程

        控制組(Control Group):資源控制的最小單位;資源限制、優(yōu)先級(jí)控制等等都定義在控制組上。一個(gè)任務(wù)可以加入某個(gè)控制組,也可以從一個(gè)控制組遷移到其他控制組。

        層級(jí)(Hierarchy):多個(gè)控制組形成樹(shù)狀的層次結(jié)構(gòu),叫做層級(jí)。

        子系統(tǒng)(Subsystem):一個(gè)子系統(tǒng)就是一種類型的資源控制器。子系統(tǒng)必須附加到一個(gè)層級(jí)上才能起作用。

            cpu:控制task對(duì)cpu的使用

            cpuacct:生成task對(duì)cpu資源使用情況的報(bào)告

            cpuset:為task分配獨(dú)立的cpu

            blkio:為塊設(shè)備設(shè)定輸入/輸出限制

            devices:開(kāi)啟或關(guān)閉task對(duì)設(shè)備的訪問(wèn)

            freezer:掛起或恢復(fù)task

            memory:設(shè)定task對(duì)內(nèi)存使用量的限定,并且自動(dòng)生成這些task對(duì)內(nèi)存資源使用情況的報(bào)告

            perfevent:使得task可以進(jìn)行統(tǒng)一的性能測(cè)試

            net_cls:通過(guò)使用等級(jí)識(shí)別符(classid)標(biāo)記網(wǎng)絡(luò)數(shù)據(jù)包,從而允許Linux流量控制程序識(shí)別從具體cgroup中生成的數(shù)據(jù)包。

     AuFS是一個(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ò)程稱為寫(xiě)入復(fù)制( copy on write ) 。AuFS允許Docker把某些鏡像作為容器的基礎(chǔ)。例如,你可能有一個(gè)可以作為很多不同容器的基礎(chǔ)的CentOS系統(tǒng)鏡像。多虧AuFS,只要一個(gè)CentOS鏡像的副本就夠了,這樣既節(jié)省了存儲(chǔ)和內(nèi)存,也保證更快速的容器部署。

     使用AuFS的另一個(gè)好處是Docker的版本容器鏡像能力。每個(gè)新版本都是一個(gè)與之前版本的簡(jiǎn)單差異改動(dòng),有效地保持鏡像文件最小化。但,這也意味著你總是要有一個(gè)記錄該容器從一個(gè)版本到另一個(gè)版本改動(dòng)的審計(jì)跟蹤。

Docker相關(guān)的基本概念:

    Image:鏡像,容器(Container)時(shí)一個(gè)動(dòng)態(tài)的概念,而鏡像時(shí)一個(gè)相對(duì)靜止的概念。鏡像其實(shí)就是容器中的文件系統(tǒng),也可以說(shuō)是一個(gè)極度精簡(jiǎn)的Linux程序運(yùn)行環(huán)境。

    Container:容器,從根本形態(tài)上而言,容器(Container)其實(shí)就是運(yùn)行在操作系統(tǒng)上的一個(gè)進(jìn)程,只不過(guò)加入了對(duì)資源的隔離和限制。Docker Container是Image的實(shí)例化對(duì)象,共享操作系統(tǒng)內(nèi)核。

    Daemon:

      Docker Daemon是創(chuàng)建和運(yùn)行Container的Linux守護(hù)進(jìn)程,也是Docker最主要的核心組件

      Docker Daemon 可以理解為Docker Container的Container

      Docker Daemon可以綁定本地端口并提供Rest API服務(wù),用來(lái)遠(yuǎn)程訪問(wèn)和控制

    Registry:docker鏡像倉(cāng)庫(kù),當(dāng)docker請(qǐng)求使用一個(gè)未在當(dāng)前系統(tǒng)中的Image時(shí),docker會(huì)從鏡像倉(cāng)庫(kù)中尋找并將其下載到系統(tǒng)中,這個(gè)docker獲取Image的地方就是Registry。默認(rèn)情況下,registry是指的docker官方的倉(cāng)庫(kù),也就是Docker Hub Registry (https://hub.docker.com )。需要注意的是,Docker Hub是dotCloud公司私有的,目前國(guó)內(nèi)只有一個(gè)DaoCloud提供代理緩存服務(wù)。當(dāng)然,docker也提供了搭建私有Registry的方法,這個(gè)會(huì)在后續(xù)篇章中說(shuō)明。

Docker的三大基礎(chǔ)組件:

    倉(cāng)庫(kù)Repository

    鏡像Image

    容器Container

    這三者之間的關(guān)系為:首先,docker Repository提供各種各樣已經(jīng)打包好的docker應(yīng)用,也就是鏡像Image;其次,用戶可以在Repository中搜索自己需要的鏡像Image,下載到本地;最后,用戶使用下載好的Image創(chuàng)建docker Container。

Docker容器的能力:

   文件系統(tǒng)隔離:每個(gè)容器都有自己的root文件系統(tǒng)

   進(jìn)程隔離:每個(gè)容器都運(yùn)行在自己的進(jìn)程環(huán)境中

   網(wǎng)絡(luò)隔離:容器間的虛擬網(wǎng)絡(luò)接口和IP地址都是分開(kāi)的

   資源隔離和分組: 使用cgroups將CPU和內(nèi)存之類的資源獨(dú)立分配給每個(gè)Docker容器

Docker的使用場(chǎng)景:

   1、使用Docker容器開(kāi)發(fā)、測(cè)試、部署服務(wù)

   2、創(chuàng)建隔離的運(yùn)行環(huán)境

   3、搭建測(cè)試環(huán)境

   4、構(gòu)建多用戶的平臺(tái)即服務(wù)(PaaS)基礎(chǔ)設(shè)施

   5、提供軟件即服務(wù)(SaaS)應(yīng)用程序

   6、高性能、超大規(guī)模的宿主機(jī)部署

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

新聞名稱:Docker系列(一):Docker介紹-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article14/cosige.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、小程序開(kāi)發(fā)面包屑導(dǎo)航、企業(yè)建站Google、App開(kāi)發(fā)

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)