Docker簡介

簡介

Docker是一個開源的引擎崩泡,可以輕松的為任何應用創(chuàng)建一個輕量級的壤靶、可移植的丁逝、自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產環(huán)境中部署淘菩,包括VMs(虛擬機)遵班、bare metal, OpenStack 集群和其他的基礎應用平臺潮改。

如果會用Python的virtualenv费奸,那么就容易理解Docker。

Docker初始目的不是虛擬化进陡,但是可以作為虛擬化技術。

virtualenv只是針對python的隔離工具微服,是借助語言層面的虛擬機來實現(xiàn)的趾疚,不具有通用性缨历。Docker是更底層的虛擬化技術,它是進程級的糙麦,也就是說不管什么語言編寫的程序都會得到相應的服務辛孵,主要依賴于內核的CGroup, Namespace, UnionFS。

Docker的圖標是搬運箱赡磅,我們想象下魄缚,許多工人在搬運貨物,集裝箱出現(xiàn)后焚廊,碼頭上看到更多的不是工人冶匹,而是集裝箱。集裝箱的搬運模式更加單一咆瘟,更加高效嚼隘,還有其他的好處。
貨物多打包在集裝箱里面袒餐,可以防止貨物之間相互影響飞蛹。并且到了另外的一個碼頭需要運轉的話,有了集裝箱后灸眼,直接把它送到另外一個容器內即可卧檐,完全可以保證里面的貨物是整體的搬遷,并且不會損壞貨物本身焰宣。

Docker是一個開源的應用容器引擎霉囚,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的Linux機器上宛徊,也可以實現(xiàn)虛擬化佛嬉。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似iPhone的app)闸天。幾乎沒有性能開銷暖呕,可以容易地在機器和書記中心運行。最重要的是苞氮,他們不依賴于任何語言湾揽,框架或者包括系統(tǒng)。
Docker是最近幾年最火爆的技術之一笼吟。
Docker自開源后受到廣泛的關注和討論库物,以至于dotCloud公司后來改名為Docker Inc。Redhat已經(jīng)在其RHEL6.5中集中支持Docker:Google也在其PaaS產品中廣泛應用贷帮。
Docker項目的目標是實現(xiàn)輕量級的操作系統(tǒng)虛擬化解決方案戚揭。Docker的基礎是Linux容器(LXC)等技術。在LXC的基礎上Docker進行了進一步的封裝撵枢,讓用戶不需要去關心容器的管理民晒,使得操作更加簡便精居。用戶操作Docker的容器就像操作一個快速輕量級的虛擬機一樣簡單。

Docker使用場景

1.web應用的自動化打包和發(fā)布
2.自動化測試和持續(xù)集成潜必、發(fā)布
3.在服務型環(huán)境中部署和調整數(shù)據(jù)庫或其他的后臺應用
4.從頭編譯或者擴展現(xiàn)有的OpenShift或Cloud Foundry平臺來搭建自己的PaaS環(huán)境靴姿。

知乎上面Docker的使用場景解析

通俗地理解Docker: https://www.zhihu.com/question/28300645

eg.
1)公司開發(fā)人員,開發(fā)web系統(tǒng)磁滚,web系統(tǒng)部署到Linux服務器佛吓,如果部署時間1-2天,調試完畢垂攘,web系統(tǒng)對外發(fā)布维雇;
2)需要把web系統(tǒng)/APP應用各種代碼,軟件搜贤,依賴環(huán)境谆沃,部署線上Linux服務器,Docker技術仪芒,將web系統(tǒng)打包(重點是把環(huán)境)為鏡像唁影,類似iso鏡像文件,移植到其他Linux系統(tǒng)掂名;

虛擬化

1.虛擬化概念:
通俗地說据沈,虛擬化就是把物理資源轉變?yōu)檫壿嬌峡梢怨芾淼馁Y源,以打破物理結構間的壁壘饺蔑,計算元件運行在虛擬的基礎上而不是真實的基礎上锌介,可以擴大硬件的容量,簡化軟件的重新配置過程猾警。
允許一個平臺上面同時運行多個操作系統(tǒng)孔祸,并且應用程序都可以在相互獨立的空間內運行,而不相互影響发皿,從而顯著提高計算機的工作效率崔慧,是一個為了簡化管理,優(yōu)化資源的解決方案穴墅。(一變多惶室,硬件利用效率提高)
目前主流的虛擬化技術有:KVM,Xen玄货,VMWare Esxi, VirtualBox皇钞,Docker,虛擬化技術也越來越廣泛地應用在企業(yè)中松捉,例如 Taobao夹界,Google等。

一個硬件設備平臺隘世,基于平臺劃分更多的虛擬資源可柿,單臺物理機虛擬更多的虛擬機也拜。
虛擬化技術計算元件,資源申請調度到其他硬件服務器趾痘;

騰訊云,阿里云的虛擬化蔓钟,客戶提交CPU永票,內存,硬盤滥沫,網(wǎng)卡侣集,帶寬需求,提交到后端硬件服務器兰绣,通過計算元件實現(xiàn)資源調度世分。
比如:如果不用調度方式去調度,64C的cpu只能虛擬出16個4C的cpu缀辩。使用了調度方式臭埋,就可以實現(xiàn)更多個的4C,實現(xiàn)資源分配臀玄;

2.虛擬化原理

虛擬化解決方案的底層是要進行虛擬化的物理機器瓢阴,這臺機器可能直接支持虛擬胡啊,也可能不會直接支持虛擬化健无;那么就需要系統(tǒng)管理程序層的支持荣恐。系統(tǒng)管理程序(Virtual machine monitor),或者稱為VMM累贤,可以看做是平臺硬件和操作系統(tǒng)的抽象畫叠穆。在某些情況中,這個系統(tǒng)管理程序就是一個操作系統(tǒng)臼膏;此時硼被,它就稱為主機操作系統(tǒng)

3.虛擬化分層抽象:

圖片.png

1)完全虛擬化技術:實際上是通過軟件實現(xiàn)對操作系統(tǒng)的資源再分配讶请,比較成熟祷嘶,例如我們的KVM,VirtualBox等夺溢。

2)半虛擬化技術:則是通過代碼修改已有的系統(tǒng)论巍,形成一種新的可虛擬化的系統(tǒng),形成一種新的可虛擬化的系統(tǒng)风响,調用硬件資源去安裝多個系統(tǒng)嘉汰,整體速度上相對高一點,代表產品有Xen状勤。

3)Docker虛擬化(介于完全虛擬化鞋怀,半虛擬化之間)双泪,輕量級虛擬化。

Docker LXC & Cgroup

Docker最早為LXC+AUFS組合密似,Docker0.9.0版本開始引入libcontainer焙矛,可以作為LXC的替代品。其中LXC負責資源管理残腌。

AUFS負責鏡像管理村斟,而LXC包括cgroup,namespace抛猫,chroot等組件蟆盹,并通過cgroup進行資源管理。

從資源管理看闺金,Docker, LXC, Cgroup三者的關系是:Cgroup在最底層落實資源管理逾滥,LXC在cgroup上封裝一層,Docker又在LXC封裝了一層败匹,要想學好Docker寨昙,需要了解負責資源管理的CGroup和LXC。

Docker和LXC哎壳, cgroup, AUFS毅待,chroot等之間的關系:

圖片.png

所以,Docker不是一個新的革命性的技術归榕,而是基于Linux的 LXC的基礎上進行發(fā)展的尸红。LXC技術作用是進行資源隔離。
linux本身每個進程使用的資源都是相互隔離的刹泄,比如內存等外里,那么為何還需要Docker呢,因為可以更加進一步地去實現(xiàn)管理特石。

Cgroup是control groups的縮寫盅蝗,是Linux內核提供的一種可以限制,記錄姆蘸,隔離進程組(process groups)所使用的物理資源(如:CPU墩莫,Memory,IO等)的機制逞敷。

最初由Google的工程師提出狂秦,后來被整合進Linux內核。Cgroups也是LXCWie實現(xiàn)虛擬化所使用的資源管理手段推捐,可以說沒有Cgroups就沒有LXC裂问,就沒有Docker。
Cgroups最初的目的是為資源管理提供的一個統(tǒng)一的框架,既整合現(xiàn)有的Cpuset等子系統(tǒng)堪簿,也為未來開發(fā)新的子系統(tǒng)提供接口∪現(xiàn)在的Cgroups適用于多種應用場景,從單個進程的資源控制椭更,到實現(xiàn)操作系統(tǒng)層次的虛擬化(OS Level Virtualization)哪审。

Linux Containers容器(LXC)可以提供輕量級的虛擬化,以便隔離進程和資源虑瀑,而且不需要提供指令解析機制以及全虛擬化的其他復雜性协饲。容器有效地將由單個操作系統(tǒng)管理的資源劃分到孤立的組中,以更好地在孤立的組之間平衡有沖突的資源使用需求缴川。

LXC建立在CGroup基礎上,我們可以粗略的認為LXC = Cgroup + namespace + Chroot + veth + 用戶態(tài)控制腳本描馅。LXC利用內核的新特性(CGroup)來提供用戶空間的對象把夸,用來保證資源的隔離和對于應用或者系統(tǒng)的資源控制。

典型的Linux文件系統(tǒng)由bootfs和rootfs兩部分組成铭污,bootfs(boot file system)主要包含bootloader和kernel恋日,bootloader主要是引導加載kernel,當kernel被加載到內存中后bootfs就被umount嘹狞,rootfs(root file system)包含的就是典型Linux系統(tǒng)中的/dev岂膳, /proc, /bin, /etc等目錄和文件。

圖片.png

Docker容器的文件系統(tǒng)最早就是建立在Aufs基礎上的磅网,Aufs(Another Union FIle System)是一種Union FS谈截,簡單來說就是支持將不同的目錄掛載到統(tǒng)一個虛擬文件系統(tǒng)下,并實現(xiàn)一種layer的概念涧偷。

由于Aufs未能加入到Linux內核簸喂,考慮到兼容性問題,加入了Devicemapper的支持燎潮。Docker目前默認運行在Devicemapper基礎上喻鳄。

Aufs將掛載到統(tǒng)一虛擬文件系統(tǒng)下的多個目錄分別設置成read-only,read-write确封,以及whiteout-able權限除呵,對read-only目錄只能讀,而寫操作只能實施在read-write目錄中爪喘。重點在于... (很多颜曾,教程中沒講下去了)

Docker虛擬化技術實現(xiàn)基礎

鏡像:模板,類似常見的ISO鏡像腥放,Docker虛擬化基于系統(tǒng)泛啸、程序,靜態(tài)的,不能修改候址,iso文件不能直接修改吕粹;
容器:稱為Docker虛擬機,基于鏡像運行的實體岗仑。使用鏡像常見的應用或者系統(tǒng)匹耕,我們稱為容器;
倉庫:倉庫是用于存放鏡像的地方荠雕,分為:公共倉庫稳其、私有倉庫;

VM 和 Docker的區(qū)別

VM虛擬化方案:


圖片.png

Docker的虛擬化方案:


圖片.png

Docker虛擬化有三個概念需要理解炸卑,分別是:鏡像既鞠,容器,倉庫盖文。在上面有講解嘱蛋。

分析上面的兩張圖的不同:

1.Docker不會在做一個Guest OS。
2.注意上面的Docker虛擬化技術圖中黃色是一個Docker容器(可包含庫和app)五续。

所以Docker虛擬化技術與傳統(tǒng)虛擬化技術是不一樣的洒敏。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市疙驾,隨后出現(xiàn)的幾起案子凶伙,更是在濱河造成了極大的恐慌,老刑警劉巖它碎,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件函荣,死亡現(xiàn)場離奇詭異,居然都是意外死亡扳肛,警方通過查閱死者的電腦和手機偏竟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來敞峭,“玉大人踊谋,你說我怎么就攤上這事⌒铮” “怎么了殖蚕?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長沉迹。 經(jīng)常有香客問我睦疫,道長,這世上最難降的妖魔是什么鞭呕? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任蛤育,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘瓦糕。我一直安慰自己底洗,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布咕娄。 她就那樣靜靜地躺著亥揖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪圣勒。 梳的紋絲不亂的頭發(fā)上费变,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天,我揣著相機與錄音圣贸,去河邊找鬼挚歧。 笑死,一個胖子當著我的面吹牛吁峻,可吹牛的內容都是我干的昼激。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼锡搜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了瞧掺?” 一聲冷哼從身側響起耕餐,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辟狈,沒想到半個月后肠缔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡哼转,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年明未,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壹蔓。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趟妥,死狀恐怖,靈堂內的尸體忽然破棺而出佣蓉,到底是詐尸還是另有隱情披摄,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布勇凭,位于F島的核電站疚膊,受9級特大地震影響,放射性物質發(fā)生泄漏虾标。R本人自食惡果不足惜寓盗,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧傀蚌,春花似錦基显、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至销部,卻和暖如春摸航,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舅桩。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工酱虎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人擂涛。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓读串,卻偏偏與公主長得像,于是被迫代替她去往敵國和親撒妈。 傳聞我的和親對象是個殘疾皇子恢暖,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容