溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Docker的原理是什么

發(fā)布時(shí)間:2021-12-13 17:27:05 來(lái)源:億速云 閱讀:154 作者:iii 欄目:云計(jì)算

本篇內(nèi)容介紹了“Docker的原理是什么”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

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

一個(gè)完整的Docker有以下幾個(gè)部分組成:

  1. dockerClient客戶端

  2. Docker Daemon守護(hù)進(jìn)程

  3. Docker Image鏡像

  4. DockerContainer容器

起源

Docker 是 PaaS 提供商 dotCloud 開源的一個(gè)基于 LXC 的高級(jí)容器引擎,源代碼托管在 Github 上, 基于go語(yǔ)言并遵從Apache2.0協(xié)議開源。

Docker自2013年以來(lái)非?;馃?,無(wú)論是從 github 上的代碼活躍度,還是Redhat在RHEL6.5中集成對(duì)Docker的支持, 就連 Google 的 Compute Engine 也支持 docker 在其之上運(yùn)行。

一款開源軟件能否在商業(yè)上成功,很大程度上依賴三件事 - 成功的 user case(用例), 活躍的社區(qū)和一個(gè)好故事。 dotCloud 自家的 PaaS 產(chǎn)品建立在docker之上,長(zhǎng)期維護(hù)且有大量的用戶,社區(qū)也十分活躍,接下來(lái)我們看看docker的故事。

  • 環(huán)境管理復(fù)雜 - 從各種OS到各種中間件到各種app, 一款產(chǎn)品能夠成功作為開發(fā)者需要關(guān)心的東西太多,且難于管理,這個(gè)問(wèn)題幾乎在所有現(xiàn)代IT相關(guān)行業(yè)都需要面對(duì)。

  • 云計(jì)算時(shí)代的到來(lái) - AWS的成功, 引導(dǎo)開發(fā)者將應(yīng)用轉(zhuǎn)移到 cloud 上, 解決了硬件管理的問(wèn)題,然而中間件相關(guān)的問(wèn)題依然存在 (所以openstack HEAT和 AWS cloudformation 都著力解決這個(gè)問(wèn)題)。開發(fā)者思路變化提供了可能性。

  • 虛擬化手段的變化 - cloud 時(shí)代采用標(biāo)配硬件來(lái)降低成本,采用虛擬化手段來(lái)滿足用戶按需使用的需求以及保證可用性和隔離性。然而無(wú)論是KVM還是Xen在 docker 看來(lái),都在浪費(fèi)資源,因?yàn)橛脩粜枰氖歉咝н\(yùn)行環(huán)境而非OS, GuestOS既浪費(fèi)資源又難于管理, 更加輕量級(jí)的LXC更加靈活和快速

  • LXC的移動(dòng)性 - LXC在 linux 2.6 的 kernel 里就已經(jīng)存在了,但是其設(shè)計(jì)之初并非為云計(jì)算考慮的,缺少標(biāo)準(zhǔn)化的描述手段和容器的可遷移性,決定其構(gòu)建出的環(huán)境難于遷移和標(biāo)準(zhǔn)化管理(相對(duì)于KVM之類image和snapshot的概念)。docker 就在這個(gè)問(wèn)題上做出實(shí)質(zhì)性的革新。這是docker最獨(dú)特的地方。

原理

Docker核心解決的問(wèn)題是利用LXC來(lái)實(shí)現(xiàn)類似VM的功能,從而利用更加節(jié)省的硬件資源提供給用戶更多的計(jì)算資源。同VM的方式不同, LXC 其并不是一套硬件虛擬化方法 - 無(wú)法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意一個(gè),而是一個(gè)操作系統(tǒng)級(jí)虛擬化方法, 理解起來(lái)可能并不像VM那樣直觀。所以我們從虛擬化到docker要解決的問(wèn)題出發(fā),看看他是怎么滿足用戶虛擬化需求的。

用戶需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的主要是以下4個(gè)問(wèn)題:

  • 隔離性 - 每個(gè)用戶實(shí)例之間相互隔離, 互不影響。 硬件虛擬化方法給出的方法是VM, LXC給出的方法是container,更細(xì)一點(diǎn)是kernel namespace

  • 可配額/可度量 - 每個(gè)用戶實(shí)例可以按需提供其計(jì)算資源,所使用的資源可以被計(jì)量。硬件虛擬化方法因?yàn)樘摂M了CPU, memory可以方便實(shí)現(xiàn), LXC則主要是利用cgroups來(lái)控制資源

  • 移動(dòng)性 - 用戶的實(shí)例可以很方便地復(fù)制、移動(dòng)和重建。硬件虛擬化方法提供snapshot和image來(lái)實(shí)現(xiàn),docker(主要)利用AUFS實(shí)現(xiàn)

  • 安全性 - 這個(gè)話題比較大,這里強(qiáng)調(diào)是host主機(jī)的角度盡量保護(hù)container。硬件虛擬化的方法因?yàn)樘摂M化的水平比較高,用戶進(jìn)程都是在KVM等虛擬機(jī)容器中翻譯運(yùn)行的, 然而對(duì)于LXC, 用戶的進(jìn)程是lxc-start進(jìn)程的子進(jìn)程, 只是在Kernel的namespace中隔離的, 因此需要一些kernel的patch來(lái)保證用戶的運(yùn)行環(huán)境不會(huì)受到來(lái)自host主機(jī)的惡意入侵, dotcloud(主要是)利用kernel grsec patch解決的.。

“Docker的原理是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI