docker入門之簡介

什么是docker

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

Docker 最初是 dotCloud 公司創(chuàng)始人 Solomon Hykes 在法國期間發(fā)起的一個(gè)公司內(nèi)部項(xiàng)目阵翎,它是基于 dotCloud 公司多年云服務(wù)技術(shù)的一次革新逢并,并于 2013 年 3 月以 Apache 2.0 授權(quán)協(xié)議開源之剧,主要項(xiàng)目代碼在 GitHub 上進(jìn)行維護(hù)。Docker 項(xiàng)目后來還加入了 Linux 基金會(huì)砍聊,并成立推動(dòng) 開放容器聯(lián)盟背稼。

Docker 自開源后受到廣泛的關(guān)注和討論,至今其 GitHub 項(xiàng)目已經(jīng)超過 3 萬 6 千個(gè)星標(biāo)和一萬多個(gè) fork辩恼。甚至由于 Docker 項(xiàng)目的火爆雇庙,在 2013 年底,dotCloud 公司決定改名為 Docker灶伊。Docker 最初是在 Ubuntu 12.04 上開發(fā)實(shí)現(xiàn)的疆前;Red Hat 則從 RHEL 6.5 開始對 Docker 進(jìn)行支持;Google 也在其 PaaS 產(chǎn)品中廣泛應(yīng)用 Docker聘萨。

Docker 使用 Google 公司推出的 Go 語言 進(jìn)行開發(fā)實(shí)現(xiàn)竹椒,基于 Linux 內(nèi)核的 cgroup,namespace米辐,以及 AUFS 類的 Union FS 等技術(shù)胸完,對進(jìn)程進(jìn)行封裝隔離,屬于 操作系統(tǒng)層面的虛擬化技術(shù)翘贮。由于隔離的進(jìn)程獨(dú)立于宿主和其它的隔離的進(jìn)程赊窥,因此也稱其為容器。最初實(shí)現(xiàn)是基于 LXC狸页,從 0.7 以后開始去除 LXC锨能,轉(zhuǎn)而使用自行開發(fā)的 libcontainer,從 1.11 開始芍耘,則進(jìn)一步演進(jìn)為使用 runC 和 containerd址遇。

Docker 在容器的基礎(chǔ)上绞愚,進(jìn)行了進(jìn)一步的封裝啄巧,從文件系統(tǒng)卢厂、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等誓军,極大的簡化了容器的創(chuàng)建和維護(hù)辙谜。使得 Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便郭脂、快捷零渐。

下面的圖片比較了 Docker 和傳統(tǒng)虛擬化方式的不同之處娄涩。傳統(tǒng)虛擬機(jī)技術(shù)是虛擬出一套硬件后鳄袍,在其上運(yùn)行一個(gè)完整操作系統(tǒng)乒省,在該系統(tǒng)上再運(yùn)行所需應(yīng)用進(jìn)程;而容器內(nèi)的應(yīng)用進(jìn)程直接運(yùn)行于宿主的內(nèi)核畦木,容器內(nèi)沒有自己的內(nèi)核袖扛,而且也沒有進(jìn)行硬件虛擬。因此容器要比傳統(tǒng)虛擬機(jī)更為輕便。

virtualization.png
docker.png

為什么要用docker

作為一種新興的虛擬化方式蛆封,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢唇礁。

更高效的利用系統(tǒng)資源

由于容器不需要進(jìn)行硬件虛擬以及運(yùn)行完整操作系統(tǒng)等額外開銷,Docker 對系統(tǒng)資源的利用率更高惨篱。無論是應(yīng)用執(zhí)行速度盏筐、內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效砸讳。因此琢融,相比虛擬機(jī)技術(shù),一個(gè)相同配置的主機(jī)簿寂,往往可以運(yùn)行更多數(shù)量的應(yīng)用漾抬。

更快速的啟動(dòng)時(shí)間

傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用常遂,由于直接運(yùn)行于宿主內(nèi)核纳令,無需啟動(dòng)完整的操作系統(tǒng),因此可以做到秒級克胳、甚至毫秒級的啟動(dòng)時(shí)間平绩。大大的節(jié)約了開發(fā)、測試漠另、部署的時(shí)間捏雌。

一致的運(yùn)行環(huán)境

開發(fā)過程中一個(gè)常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境笆搓、測試環(huán)境性湿、生產(chǎn)環(huán)境不一致,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)砚作。而 Docker 的鏡像提供了除內(nèi)核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性嘹锁,從而不會(huì)再出現(xiàn) 「這段代碼在我機(jī)器上沒問題啊」 這類問題葫录。

持續(xù)交付和部署

對開發(fā)和運(yùn)維(DevOps)人員來說,最希望的就是一次創(chuàng)建或配置领猾,可以在任意地方正常運(yùn)行米同。
使用 Docker 可以通過定制應(yīng)用鏡像來實(shí)現(xiàn)持續(xù)集成、持續(xù)交付摔竿、部署面粮。開發(fā)人員可以通過 Dockerfile 來進(jìn)行鏡像構(gòu)建,并結(jié)合 持續(xù)集成(Continuous Integration) 系統(tǒng)進(jìn)行集成測試继低,而運(yùn)維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像熬苍,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進(jìn)行自動(dòng)部署。
而且使用 Dockerfile 使鏡像構(gòu)建透明化,不僅僅開發(fā)團(tuán)隊(duì)可以理解應(yīng)用運(yùn)行環(huán)境柴底,也方便運(yùn)維團(tuán)隊(duì)理解應(yīng)用運(yùn)行所需條件婿脸,幫助更好的生產(chǎn)環(huán)境中部署該鏡像。

更輕松的遷移

由于 Docker 確保了執(zhí)行環(huán)境的一致性柄驻,使得應(yīng)用的遷移更加容易狐树。Docker 可以在很多平臺(tái)上運(yùn)行,無論是物理機(jī)鸿脓、虛擬機(jī)抑钟、公有云、私有云野哭,甚至是筆記本在塔,其運(yùn)行結(jié)果是一致的。因此用戶可以很輕易的將在一個(gè)平臺(tái)上運(yùn)行的應(yīng)用虐拓,遷移到另一個(gè)平臺(tái)上心俗,而不用擔(dān)心運(yùn)行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運(yùn)行的情況。

更輕松的維護(hù)和擴(kuò)展

Docker 使用的分層存儲(chǔ)以及鏡像的技術(shù)蓉驹,使得應(yīng)用重復(fù)部分的復(fù)用更為容易城榛,也使得應(yīng)用的維護(hù)更新更加簡單,基于基礎(chǔ)鏡像進(jìn)一步擴(kuò)展鏡像也變得非常簡單态兴。此外狠持,Docker 團(tuán)隊(duì)同各個(gè)開源項(xiàng)目團(tuán)隊(duì)一起維護(hù)了一大批高質(zhì)量的官方鏡像,既可以直接在生產(chǎn)環(huán)境使用瞻润,又可以作為基礎(chǔ)進(jìn)一步定制喘垂,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。

對比傳統(tǒng)虛擬機(jī)總結(jié)

特性 容器 虛擬機(jī)
啟動(dòng) 秒級 分鐘級
硬盤使用 一般為 MB 一般為 GB
性能 接近原生 弱于
系統(tǒng)支持量 單機(jī)支持上千個(gè)容器 一般幾十個(gè)

摘自 Docker — 從入門到實(shí)踐

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绍撞,一起剝皮案震驚了整個(gè)濱河市正勒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌傻铣,老刑警劉巖章贞,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件非洲,死亡現(xiàn)場離奇詭異鸭限,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)两踏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門败京,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人梦染,你說我怎么就攤上這事赡麦。” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵隧甚,是天一觀的道長车荔。 經(jīng)常有香客問我,道長戚扳,這世上最難降的妖魔是什么忧便? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮帽借,結(jié)果婚禮上珠增,老公的妹妹穿的比我還像新娘。我一直安慰自己砍艾,他們只是感情好蒂教,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脆荷,像睡著了一般凝垛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜓谋,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天梦皮,我揣著相機(jī)與錄音,去河邊找鬼桃焕。 笑死剑肯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的观堂。 我是一名探鬼主播让网,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼师痕!你這毒婦竟也來了溃睹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤胰坟,失蹤者是張志新(化名)和其女友劉穎因篇,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腕铸,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惜犀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年铛碑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了狠裹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡汽烦,死狀恐怖涛菠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤俗冻,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布礁叔,位于F島的核電站,受9級特大地震影響迄薄,放射性物質(zhì)發(fā)生泄漏琅关。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一讥蔽、第九天 我趴在偏房一處隱蔽的房頂上張望涣易。 院中可真熱鬧,春花似錦冶伞、人聲如沸新症。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徒爹。三九已至,卻和暖如春芋类,著一層夾襖步出監(jiān)牢的瞬間隆嗅,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工梗肝, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留榛瓮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓巫击,卻偏偏與公主長得像禀晓,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子坝锰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件粹懒?Google Compute Engi...
    ahohoho閱讀 15,532評論 15 147
  • 0. 前言 docker是什么?docker是用GO語言開發(fā)的應(yīng)用容器引擎顷级,基于容器化凫乖,沙箱機(jī)制的應(yīng)用部署技術(shù)」保可...
    sessionboy閱讀 3,854評論 2 49
  • 寫這篇文章主要是為了今后畢業(yè)論文素材上的整理帽芽,同時(shí)對docker進(jìn)行鞏固溫習(xí)。大綱: docker簡介docker...
    胡圖仙人閱讀 7,431評論 2 96
  • 你說謊言如刀 刀刀割喉 我說謊言如光 光光照心翔冀。
    姓廖閱讀 244評論 0 0
  • 怎樣讀小說 讀書不容易导街,應(yīng)該選擇自己感興趣的、有益的內(nèi)容去讀纤子。 讀書 書的...
    屬于格子的夏天閱讀 411評論 0 1