“容器”你真的了解嗎---上篇!
前段時(shí)間寫了一篇文章云原生技術(shù)的“前世今生”,講述了云原生技術(shù)背后的一些故事,其中提到了一家做容器技術(shù)很牛的公司叫Docker。我估計(jì)很多小伙伴是聽到Docker這個(gè)詞才去了解容器的概念和技術(shù),而不是因?yàn)槿萜骷夹g(shù)才去了解Docker!是不是被我說中了?甚至有些小伙伴可能會說,容器不就是Docker嘛?
今天我想借助這篇文章帶著大家一起捋一捋容器技術(shù)和Docker之間的關(guān)系,帶你了解到底什么是容器技術(shù),什么是docker!!
故事正式開始!!!!
容器技術(shù)編年史
1979年在UNIX的第7個(gè)版本中引入了一個(gè)內(nèi)核系統(tǒng)調(diào)用叫“chroot”,中文可以翻譯成“切根”,也就是切換根目錄,是讓一個(gè)應(yīng)用程序進(jìn)程的根目錄改變到文件系統(tǒng)的新位置而不是使用系統(tǒng)的原始“/”根目錄,目的是讓這個(gè)進(jìn)程只能在自己特定的目錄空間下搞事情,不能擾亂同一個(gè)系統(tǒng)屋檐下其他應(yīng)用程序的目錄,至此“容器”的概念開始萌芽!這項(xiàng)技術(shù)在1982年3月18日被加入到BSD系統(tǒng)中。
2000年3月14日借助之前引入的chroot系統(tǒng)調(diào)用技術(shù)以及加入了一些新功能,F(xiàn)reeBSD4.0版本中首次發(fā)布了FreeBSD?jail功能,與之前的chroot 不同的是,F(xiàn)reeBSD jail可以實(shí)現(xiàn)文件系統(tǒng)、用戶、網(wǎng)絡(luò)等的隔離,使得每一個(gè)應(yīng)用進(jìn)程都有自己獨(dú)立的資源可以使用,仿佛被放在了一個(gè)盒子里,通常我們叫“沙盒”,他可以為每一個(gè)jail指定 IP 地址、可以對軟件的安裝和配置進(jìn)行定制,等等。最早的容器技術(shù)誕生了!!(補(bǔ)充一句,jail就是監(jiān)牢的意思,把進(jìn)程放到固定“沙盒/監(jiān)牢”里!)
2001年由?Jacques Gélinas發(fā)起,開源軟件聯(lián)盟維護(hù)的另一個(gè)基于 jail機(jī)制的容器技術(shù)“Linux Vserver”發(fā)布,它用于對計(jì)算機(jī)系統(tǒng)上的資源(如文件系統(tǒng)、CPU 處理時(shí)間、網(wǎng)絡(luò)地址和內(nèi)存等)進(jìn)行安全地劃分,劃分出的虛擬系統(tǒng)叫Virtual Private Server(VPS)。
2004年2月?SUN發(fā)布了基于X86架構(gòu)和SPAC架構(gòu)下Solaris 10操作系統(tǒng)內(nèi)的“Solaris Containers”功能,Container這個(gè)詞初出江湖。
2005年由Open?Virtuozzo社區(qū)發(fā)布了基于liunx kernel的容器功能組件 OpenVZ,和Solaris Containers功能相似!每個(gè) OpenVZ 容器都有一套隔離的文件系統(tǒng)、用戶及用戶組、進(jìn)程樹、網(wǎng)絡(luò)、設(shè)備和 IPC 對象。
2006年Google開始使用Process Containers,用于對一組進(jìn)程進(jìn)行限制、記錄、隔離資源使用(CPU、內(nèi)存、磁盤 I/O、網(wǎng)絡(luò)等)。后來為了避免和 inux kernel context,的“容器”一詞混淆而改名為?Control Groups,并在2007年被liunx合并到2.6.24的kernel中.上一篇文章中云原生技術(shù)的“前世今生”我曾經(jīng)提到,google秘而不宣的使用容器技術(shù)已經(jīng)十幾年啦!!
2008年8月6日,Sourceforge開源網(wǎng)站正式發(fā)布了LXC,全稱?Linux Containers,耿直的就叫l(wèi)inux容器,它是第一個(gè)最完善的 Linux 容器管理器的實(shí)現(xiàn)方案,通過linux的內(nèi)核技術(shù)cgroups和namespace技術(shù)實(shí)現(xiàn),與其它容器技術(shù)不同的是, LXC 可以工作在普通的 Linux 內(nèi)核上,而不需要增加補(bǔ)丁,這在當(dāng)時(shí)是一個(gè)明星項(xiàng)目!
2011年CloudFoundry發(fā)布Warden,底層使用的LXC,只是底層不再耦合到linux上,還記得我上篇文章所說的嘛,當(dāng)Docker項(xiàng)目剛剛開源的時(shí)候,當(dāng)時(shí)的PAAS的老大CloudFoundry并不感到有什么新奇,因?yàn)镃loudFoundry的底層也是容器技術(shù)!
2013年3月13日dotCloud公司宣布開源自己的容器項(xiàng)目Docker,在Docker 0.9版本以前docker的核心是LXC。對,你沒看錯(cuò)就是LXC,在Dcoker 0.9版本以后推出了自己的容器運(yùn)行驅(qū)動libcontainer,同時(shí)也支持LXC,在1.10版本后才正式放棄了對LXC的支持,后來為了遵循OCI,libcontainer又升級為runC.
So,來點(diǎn)總結(jié)吧,容器技術(shù)早就有了,而且早先的明星容器實(shí)現(xiàn)工具是LXC(別人的名字就叫 Linux Containers), Docker一開始是基于LXC的,所以嚴(yán)格的來說Docker并不是什么容器,他只是LXC的增強(qiáng)版,是容器技術(shù)易用的前端工具,容器本身是Liunx的內(nèi)核技術(shù),Docker只是把這項(xiàng)技術(shù)進(jìn)行了極大的簡化和普及!
那么為何docker一開始要去封裝LXC呢?到底LXC的底層用了什么技術(shù)讓Docker如此看重?這么多容器技術(shù)為什么偏偏Docker就火遍了大江南北?Docker的獨(dú)到之處到底在哪?請持續(xù)關(guān)注小羅聊容器:【容器】你真的了解嘛-下篇(技術(shù)干貨,慎入!!)
容器 Docker
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。