docker原理是什么,讓我們一起了解一下?
Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴(lài)包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的Linux或Windows操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。
一個(gè)完整的Docker有以下幾個(gè)部分組成:
DockerClient客戶(hù)端
Docker Daemon守護(hù)進(jìn)程
Docker Image鏡像
DockerContainer容器
Docker核心解決的問(wèn)題是利用LXC來(lái)實(shí)現(xiàn)類(lèi)似VM的功能,從而利用更加節(jié)省的硬件資源提供給用戶(hù)更多的計(jì)算資源。同VM的方式不同, LXC 其并不是一套硬件虛擬化方法 - 無(wú)法歸屬到全虛擬化、部分虛擬化和半虛擬化中的任意一個(gè),而是一個(gè)操作系統(tǒng)級(jí)虛擬化方法, 理解起來(lái)可能并不像VM那樣直觀。所以我們從虛擬化到docker要解決的問(wèn)題出發(fā),看看他是怎么滿(mǎn)足用戶(hù)虛擬化需求的。

用戶(hù)需要考慮虛擬化方法,尤其是硬件虛擬化方法,需要借助其解決的主要是以下4個(gè)問(wèn)題:
隔離性 - 每個(gè)用戶(hù)實(shí)例之間相互隔離, 互不影響。 硬件虛擬化方法給出的方法是VM, LXC給出的方法是container,更細(xì)一點(diǎn)是kernel namespace
可配額/可度量 - 每個(gè)用戶(hù)實(shí)例可以按需提供其計(jì)算資源,所使用的資源可以被計(jì)量。硬件虛擬化方法因?yàn)樘摂M了CPU, memory可以方便實(shí)現(xiàn), LXC則主要是利用cgroups來(lái)控制資源
移動(dòng)性 - 用戶(hù)的實(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化的水平比較高,用戶(hù)進(jìn)程都是在KVM等虛擬機(jī)容器中翻譯運(yùn)行的, 然而對(duì)于LXC,用戶(hù)的進(jìn)程是lxc-start進(jìn)程的子進(jìn)程, 只是在Kernel的namespace中隔離的, 因此需要一些kernel的patch來(lái)保證用戶(hù)的運(yùn)行環(huán)境不會(huì)受到來(lái)自host主機(jī)的惡意入侵, dotcloud(主要是)利用kernel grsec patch解決的。
以上就是小編的分享,希望可以幫助到大家。