最近開(kāi)始學(xué)習(xí)Docker這個(gè)虛擬容器技術(shù), 決定把學(xué)習(xí)過(guò)程記錄下嘿歌,先來(lái)記錄下Docker的簡(jiǎn)介哪雕。
Docker簡(jiǎn)介
是什么
為什么會(huì)有docker 出現(xiàn)
一款產(chǎn)品從開(kāi)發(fā)到上線,從操作系統(tǒng)到運(yùn)行環(huán)境更振,再到應(yīng)用配置炕桨。作為開(kāi)發(fā)+運(yùn)維之間的協(xié)作,需要跟多東西肯腕, 這也是互聯(lián)網(wǎng)公司都不得不面對(duì)的問(wèn)題献宫,特別是各種版本的迭代之后, 不同版本環(huán)境的兼容实撒,對(duì)運(yùn)維人員都是考驗(yàn)姊途。
Docker之所以發(fā)展如此迅速,也是因?yàn)樗鼘?duì)此給出了一個(gè)標(biāo)準(zhǔn)化的解決方案知态。
環(huán)境配置如此麻煩捷兰,換一臺(tái)機(jī)器,就要重來(lái)一次负敏,費(fèi)時(shí)費(fèi)力贡茅。 很多人想到,能不能從根本上解決問(wèn)題其做, 軟件可以帶環(huán)境安裝友扰? 也就是說(shuō),安裝的時(shí)候庶柿,把原始環(huán)境一模一樣地復(fù)制過(guò)來(lái)村怪,開(kāi)發(fā)人員利用Docker可以消除協(xié)作編碼時(shí)“在我的機(jī)器上可正常工作”的問(wèn)題。
docker 理念
docker是基于Go語(yǔ)言實(shí)現(xiàn)的云開(kāi)源項(xiàng)目浮庐。 Docker的主要目標(biāo)是"Build甚负, Ship and Run Any App柬焕, Anywhere“, 也就是通過(guò)對(duì)應(yīng)組件的封裝、分發(fā)梭域、部署斑举、運(yùn)行等生命周期的管理,使用戶的APP(可以是一個(gè)WEB應(yīng)用或數(shù)據(jù)庫(kù)應(yīng)用等等)及運(yùn)行環(huán)境能夠做到”一次封裝病涨,到處運(yùn)行“富玷。
Linux容器技術(shù)的出現(xiàn)就解決了這樣一個(gè)問(wèn)題, 而Docker就是在它的基礎(chǔ)上發(fā)展過(guò)來(lái)的既穆。 將應(yīng)用運(yùn)行在Dokcer容器上面赎懦,而Docker容器在任何操作系統(tǒng)上都是一致的, 這就實(shí)現(xiàn)了跨平臺(tái)幻工、跨服務(wù)器励两。只需要一次配置好環(huán)境,換到別的機(jī)子上就可以一鍵部署好囊颅, 大大簡(jiǎn)化了操作当悔。
一句話,docker定義
- 解決了運(yùn)行環(huán)境和配置問(wèn)題的軟件容器踢代,方便做持續(xù)集成并有助于整體發(fā)布的容器虛擬化技術(shù)
能做什么
之前的虛擬機(jī)技術(shù)
虛擬機(jī) virtual machine 就是帶環(huán)境安裝的一種解決方案盲憎。 它可以在一種操作系統(tǒng)里面運(yùn)行另一種操作, 比如在windows系統(tǒng)里面運(yùn)行Linux系統(tǒng)胳挎,應(yīng)用程序?qū)Υ撕翢o(wú)感知焙畔,因?yàn)樘摂M機(jī)看上去跟真實(shí)系統(tǒng)一模一樣, 而對(duì)于覅曾系統(tǒng)來(lái)說(shuō)串远,虛擬機(jī)就是一個(gè)普通的文件宏多,不需要了就刪掉, 對(duì)其他部分毫無(wú)影響澡罚。這類虛擬機(jī)完美的運(yùn)行了另一套系統(tǒng)嗎能夠使應(yīng)用程序伸但,操作系統(tǒng)和硬件三者之間的邏輯不變。 虛擬機(jī)的缺點(diǎn): 1 資源占用多 2 冗余步驟多 3 啟動(dòng)慢
容器虛擬化技術(shù)
由于前面虛擬機(jī)存在的這些缺點(diǎn)留搔,Linux發(fā)展出了另一種虛擬化技術(shù): Linux 容器(Linux Container 縮寫(xiě)為 LXC)
Linux 容器不是模擬一個(gè)完整的操作系統(tǒng)更胖, 而是對(duì)進(jìn)程進(jìn)行隔離。 有了容器隔显,就可以將軟件運(yùn)行所需的所有資源打包到一個(gè)隔離的容器中却妨。 容器與虛擬機(jī)不同,不需要捆綁一整套操作系統(tǒng)括眠,只需要軟件工作所需的庫(kù)資源和設(shè)置彪标。 系統(tǒng)因此而變得高效輕量,保證部署在任何環(huán)境中的軟件都能始終如一地運(yùn)行掷豺。
開(kāi)發(fā)/運(yùn)維(DevOps)
-
一次構(gòu)建捞烟、隨處運(yùn)行
-
更快速的應(yīng)用交付和部署
傳統(tǒng)的應(yīng)用開(kāi)發(fā)完成后薄声,需要提供一堆安裝程序和配置說(shuō)明文檔,安裝部署后需根據(jù)配置文檔進(jìn)行繁雜的配置才能正常運(yùn)行题画。Docker化之后只需要交付少量容器鏡像文件默辨,在正式生產(chǎn)環(huán)境加載鏡像并運(yùn)行即可,應(yīng)用安裝配置在鏡像里已經(jīng)內(nèi)置好苍息,大大節(jié)省部署配置和測(cè)試驗(yàn)證時(shí)間缩幸。
-
更便捷的升級(jí)和擴(kuò)縮容
隨著微服務(wù)架構(gòu)和Docker的發(fā)展,大量的應(yīng)用會(huì)通過(guò)微服務(wù)方式架構(gòu)竞思,應(yīng)用的開(kāi)發(fā)構(gòu)建將變成搭樂(lè)高積木一樣表谊,每個(gè)Docker容器將變成一塊“積木”,應(yīng)用的升級(jí)將變得非常容易衙四。當(dāng)現(xiàn)有的容器不足以支撐業(yè)務(wù)處理時(shí),可通過(guò)鏡像運(yùn)行新的容器進(jìn)行快速擴(kuò)容患亿,使應(yīng)用系統(tǒng)的擴(kuò)容從原先的天級(jí)變成分鐘級(jí)甚至秒級(jí)传蹈。
-
更簡(jiǎn)單的系統(tǒng)運(yùn)維
應(yīng)用容器化運(yùn)行后,生產(chǎn)環(huán)境運(yùn)行的應(yīng)用可與開(kāi)發(fā)步藕、測(cè)試環(huán)境的應(yīng)用高度一致惦界,容器會(huì)將應(yīng)用程序相關(guān)的環(huán)境和狀態(tài)完全封裝起來(lái),不會(huì)因?yàn)榈讓踊A(chǔ)架構(gòu)和操作系統(tǒng)的不一致性給應(yīng)用帶來(lái)影響咙冗,產(chǎn)生新的BUG沾歪。當(dāng)出現(xiàn)程序異常時(shí),也可以通過(guò)測(cè)試環(huán)境的相同容器進(jìn)行快速定位和修復(fù)雾消。
-
更高效的計(jì)算資源利用
Docker是內(nèi)核級(jí)虛擬化灾搏,其不像傳統(tǒng)的虛擬化技術(shù)一樣需要額外的Hypervisor支持,所以在一臺(tái)物理機(jī)上可以運(yùn)行很多個(gè)容器實(shí)例立润,可大大提升物理服務(wù)器的CPU和內(nèi)存的利用率狂窑。
-
企業(yè)級(jí)
-
m某團(tuán)
why docker?
更輕量: 基于容器的虛擬化桑腮,僅包含業(yè)務(wù)運(yùn)行所需的runtime環(huán)境泉哈,CentOS/Ubuntu基礎(chǔ)鏡像僅170M,宿主機(jī)可部署100-1000個(gè)容器 更高效:無(wú)操作系統(tǒng)虛擬化開(kāi)銷 計(jì)算: 輕量破讨,無(wú)額外開(kāi)銷 存儲(chǔ): 系統(tǒng)盤(pán) aufs/dm/overlayfs丛晦;數(shù)據(jù)盤(pán)volume 網(wǎng)絡(luò):宿主機(jī)網(wǎng)絡(luò), NS隔離 更敏捷提陶、更靈活 分層的存儲(chǔ)和包管理烫沙,devops理念 支持多種網(wǎng)絡(luò)配置
-
某street
Docker的優(yōu)勢(shì) 輕量,秒級(jí)的快讀啟動(dòng)速度 簡(jiǎn)單隙笆,易用凭豪,活躍的社區(qū) 標(biāo)準(zhǔn)統(tǒng)一的打包/部署/運(yùn)行方案 鏡像支持增量分發(fā)地梨,易于部署 易于構(gòu)建觉阅,良好的RESTFUL API,也很適合自動(dòng)化測(cè)試和持續(xù)集成 性能仰冠,尤其是內(nèi)存和IO的開(kāi)銷
。蝶糯。洋只。
去哪里下
1. 官網(wǎng)
2. 倉(cāng)庫(kù)
附上這個(gè)xmind的地址: Docker簡(jiǎn)介
xmind內(nèi)容參考尚硅谷Docker學(xué)習(xí)講解視頻,在這里感謝分享視頻給我的童鞋昼捍。