學(xué)習(xí)完整課程請移步 互聯(lián)網(wǎng) Java 全棧工程師
本節(jié)視頻
概述
作為一種新興的虛擬化方式脊框,Docker 跟傳統(tǒng)的虛擬化方式相比具有眾多的優(yōu)勢。
更高效的利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬以及運行完整操作系統(tǒng)等額外開銷截粗,Docker 對系統(tǒng)資源的利用率更高垮刹。無論是應(yīng)用執(zhí)行速度达吞、內(nèi)存損耗或者文件存儲速度,都要比傳統(tǒng)虛擬機技術(shù)更高效荒典。因此酪劫,相比虛擬機技術(shù),一個相同配置的主機寺董,往往可以運行更多數(shù)量的應(yīng)用覆糟。
更快速的啟動時間
傳統(tǒng)的虛擬機技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而 Docker 容器應(yīng)用遮咖,由于直接運行于宿主內(nèi)核滩字,無需啟動完整的操作系統(tǒng),因此可以做到秒級御吞、甚至毫秒級的啟動時間麦箍。大大的節(jié)約了開發(fā)、測試陶珠、部署的時間挟裂。
一致的運行環(huán)境
開發(fā)過程中一個常見的問題是環(huán)境一致性問題。由于開發(fā)環(huán)境揍诽、測試環(huán)境诀蓉、生產(chǎn)環(huán)境不一致栗竖,導(dǎo)致有些 bug 并未在開發(fā)過程中被發(fā)現(xiàn)。而 Docker 的鏡像提供了除內(nèi)核外完整的運行時環(huán)境渠啤,確保了應(yīng)用運行環(huán)境一致性狐肢,從而不會再出現(xiàn) 「這段代碼在我機器上沒問題啊」 這類問題。
持續(xù)交付和部署
對開發(fā)和運維(DevOps)人員來說沥曹,最希望的就是一次創(chuàng)建或配置份名,可以在任意地方正常運行。
使用 Docker 可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成架专、持續(xù)交付同窘、部署。開發(fā)人員可以通過 Dockerfile
來進(jìn)行鏡像構(gòu)建部脚,并結(jié)合 持續(xù)集成(Continuous Integration) 系統(tǒng)進(jìn)行集成測試想邦,而運維人員則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,甚至結(jié)合 持續(xù)部署(Continuous Delivery/Deployment) 系統(tǒng)進(jìn)行自動部署委刘。
而且使用 Dockerfile
使鏡像構(gòu)建透明化丧没,不僅僅開發(fā)團(tuán)隊可以理解應(yīng)用運行環(huán)境,也方便運維團(tuán)隊理解應(yīng)用運行所需條件锡移,幫助更好的生產(chǎn)環(huán)境中部署該鏡像呕童。
更輕松的遷移
由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易淆珊。Docker 可以在很多平臺上運行夺饲,無論是物理機、虛擬機施符、公有云往声、私有云,甚至是筆記本戳吝,其運行結(jié)果是一致的浩销。因此用戶可以很輕易的將在一個平臺上運行的應(yīng)用,遷移到另一個平臺上听哭,而不用擔(dān)心運行環(huán)境的變化導(dǎo)致應(yīng)用無法正常運行的情況慢洋。
更輕松的維護(hù)和擴展
Docker 使用的分層存儲以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易陆盘,也使得應(yīng)用的維護(hù)更新更加簡單普筹,基于基礎(chǔ)鏡像進(jìn)一步擴展鏡像也變得非常簡單。此外隘马,Docker 團(tuán)隊同各個開源項目團(tuán)隊一起維護(hù)了一大批高質(zhì)量的 官方鏡像太防,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進(jìn)一步定制祟霍,大大的降低了應(yīng)用服務(wù)的鏡像制作成本杏头。
對比傳統(tǒng)虛擬機總結(jié)
特性 | 容器 | 虛擬機 |
---|---|---|
啟動 | 秒級 | 分鐘級 |
硬盤使用 | 一般為 MB
|
一般為 GB
|
性能 | 接近原生 | 弱于 |
系統(tǒng)支持量 | 單機支持上千個容器 | 一般幾十個 |