云計算的發(fā)展越來越迅速豌研,而虛擬化則是云計算的重要基礎(chǔ)。而而Docker作為虛擬化的重要手段之一唬党,定義了一套容器從構(gòu)建到執(zhí)行的標(biāo)準(zhǔn)化體系鹃共,改變了傳統(tǒng)的虛擬化技術(shù),深度影響了云計算領(lǐng)域驶拱。
什么是docker
Docker是一種通過容器使得創(chuàng)建霜浴、部署和運行應(yīng)用程序更加簡單的工具。通過容器蓝纲,開發(fā)者們可以將應(yīng)用程序所需要的庫和依賴文件打包在一起阴孟,實現(xiàn)所需要的資源隔離晌纫。從而可以將應(yīng)用程序部署到任意的機器上面,而不用擔(dān)心不同機器之間的環(huán)境配置不同而引起錯誤永丝。Docker就像是碼頭上的集裝箱一樣锹漱,不同的貨物通過不同的集裝箱運載,避免引起混亂类溢。而Docker的“貨物”就是應(yīng)用程序凌蔬,通過容器的隔離,不但消除了程序之間存在的可能影響闯冷,并且實現(xiàn)了從打包到應(yīng)用的快速部署砂心。從某種程度上來說,Docker有一點想虛擬機蛇耀,但是又和虛擬機有所不同辩诞。Docker的啟動速度更快,資源占用更少纺涤,在一臺物理機上译暂,可以同時運行幾十、甚至上百個容器撩炊。
和VM的異同
虛擬機和容器的作用都是消除了對硬件資源的需求外永,通過某種方式將應(yīng)用程序運行時所需要的依賴打包成一個獨立的單元,從而實現(xiàn)程序更好的可移植性拧咳。但是二者在實現(xiàn)的方式上是不同的伯顶,所謂是殊途同歸。
虛擬機屬于操作系統(tǒng)級別的資源隔離骆膝,資源隔離的更加徹底一些祭衩。如上圖所示,每一個新的虛擬機打包的內(nèi)容包括虛擬硬件阅签、操作系統(tǒng)和用戶空間掐暮。因此虛擬機的啟動速度相對來說會慢一些。但Docker的具體做法如下圖所示:
如上圖所示政钟,Docker對于上層的應(yīng)用程序打包的內(nèi)容僅包括用戶空間路克,并且不會將內(nèi)核系統(tǒng)和硬件程序打包在內(nèi),所以相比虛擬機而言养交,容器的操作方式更加輕量一些衷戈。對于物理機、虛擬機和Docker层坠,如果說將物理機看做一個獨立的大別墅的話殖妇,那么虛擬機就像是高層中每一層的樓房,每一個戶型都是有獨立的破花,有自己獨立的空間谦趣,而容器就像是學(xué)校里面的宿舍疲吸,每一個宿舍都是獨立的,但是洗漱間前鹅、淋浴間之類的資源屬于共享資源摘悴。
Docker的優(yōu)勢
容器并不是一個新鮮的概念,谷歌很久之前就在使用自己的容器技術(shù)了舰绘。其他的容器技術(shù)例如Solaris Zones蹂喻,BSD jails,和LXC都是很早就有的技術(shù)捂寿,那么相比其他容器技術(shù)而言口四,Docker的優(yōu)勢在哪里呢?
- 易用性:Docker的產(chǎn)生對于使開發(fā)者秦陋、系統(tǒng)管理員和架構(gòu)師都可以在他們的電腦上輕而易舉的打包他們的程序蔓彩,并且可以運行在任何的公有云、私有云和其他的機器上面驳概。真正的實現(xiàn)了“一次打包赤嚼,隨處運行”。
- 速度快:Docker更加輕量顺又,所以運行速度也更快更卒。一般情況下Docker的啟動速度是秒級的,相比VM要虛擬出一個完整的操作系統(tǒng)而言稚照,速度要快的多蹂空。
- Docker Hub:Docker Hub是Docker的鏡像倉庫,當(dāng)然你可以可以搭建自己的鏡像倉庫锐锣。Docker Hub上官方提供了非常多可使用的鏡像腌闯,用戶可以在上面非常方便的找到自己需要的服務(wù)绳瘟,對于開發(fā)人員來說是非常方便和友好的雕憔。
- 模塊化和可擴展性:Docker可以很容易的將你的應(yīng)用程序分割成獨立的容器。也就是將應(yīng)用程序進行模塊化糖声,并且各個模塊之間可以非常方便的進行組合與溝通斤彼。另外,對于應(yīng)用程序而言蘸泻,對不同的模塊進行升級也是容易的琉苇,只需要獨立更新相應(yīng)的模塊容器即可,無需對整個應(yīng)用程序進行更改悦施。
總結(jié)
只是從整體的角度上對Docker技術(shù)進行了一些簡單介紹并扇,對于Docker而言,具體是怎么操作的抡诞,可以用Docker做哪些事情穷蛹,以及在我們的AI平臺上土陪,是怎么使用Docker來提供服務(wù)的,之后會有更多的介紹肴熏。
參考文章:
[1]What is Docker? https://opensource.com/resources/what-docker
[2]A Beginner-Friendly Introduction to Containers, VMs and Docker.https://medium.freecodecamp.org/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b
[3]Learn Enough Docker to be Useful.https://towardsdatascience.com/learn-enough-docker-to-be-useful-b7ba70caeb4b