Docker 有哪些優(yōu)點(diǎn)?
前面的小節(jié)我們學(xué)習(xí)了一些前置知識(shí)和 Docker 的基本原理,那么,你可能會(huì)問(wèn)了:Docker 到底有哪些優(yōu)點(diǎn)呢?我們?yōu)槭裁匆獙W(xué)習(xí) Docker 呢?別著急,這節(jié)課我們就來(lái)細(xì)數(shù)下 Docker 的優(yōu)點(diǎn):
1. 更好的安全性
如果服務(wù)器上啟動(dòng)了多個(gè)服務(wù),這些服務(wù)可能會(huì)相互影響的,每一個(gè)服務(wù)都能看到其他服務(wù)的進(jìn)程,也可以訪問(wèn)宿主機(jī)器上的任意文件,這種情況下,一旦服務(wù)器上的某一個(gè)服務(wù)被入侵,那么入侵者就可能訪問(wèn)到當(dāng)前機(jī)器上所有的服務(wù)和文件,使用 Docker 則可以有效避免這種問(wèn)題的發(fā)生。
2. 更高效地利用系統(tǒng)資源
由于容器不需要進(jìn)行硬件虛擬化以及運(yùn)行完整操作系統(tǒng)等額外開銷,Docker 對(duì)系統(tǒng)資源的利用率更高。無(wú)論是應(yīng)用執(zhí)行速度、內(nèi)存損耗以及文件存儲(chǔ)速度,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效。
3. 更快的啟動(dòng)時(shí)間
傳統(tǒng)的虛擬機(jī)技術(shù)啟動(dòng)應(yīng)用服務(wù)往往需要數(shù)分鐘, Docker 容器由于直接運(yùn)行于宿主內(nèi)核,無(wú)需啟動(dòng)完整的操作系統(tǒng),因此可以超快啟動(dòng)容器應(yīng)用。節(jié)約了開發(fā)、測(cè)試和部署的時(shí)間。
4. 一致的運(yùn)行環(huán)境
開發(fā)過(guò)程中有一個(gè)令人頭疼的問(wèn)題是環(huán)境一致性問(wèn)題。由于開發(fā)環(huán)境、測(cè)試環(huán)境、生產(chǎn)環(huán)境不一致,導(dǎo)致有些 Bug 并未在開發(fā)過(guò)程中被發(fā)現(xiàn)。而 Docker 的鏡像提供了除內(nèi)核外完整的運(yùn)行時(shí)環(huán)境,確保了應(yīng)用運(yùn)行環(huán)境一致性。
5. 持續(xù)交付和部署
使用 Docker可以通過(guò)定制應(yīng)用鏡像來(lái)實(shí)現(xiàn)持續(xù)集成、持續(xù)交付、部署。開發(fā)者可以通過(guò) Dockerfile 來(lái)進(jìn)行鏡像構(gòu)建,并結(jié)合持續(xù)集成系統(tǒng)進(jìn)行集成測(cè)試,運(yùn)維則可以直接在生產(chǎn)環(huán)境中快速部署該鏡像,結(jié)合持續(xù)部署系統(tǒng)進(jìn)行自動(dòng)部署。
6. 更輕松地遷移
由于 Docker 確保了執(zhí)行環(huán)境的一致性,使得應(yīng)用的遷移更加容易。Docker可以在很多平臺(tái)上運(yùn)行,無(wú)論是物理機(jī)、虛擬機(jī)、公有云、私有云,其運(yùn)行結(jié)果是一致的。用戶可以很輕易地將應(yīng)用遷移到另一個(gè)平臺(tái)上,不用擔(dān)心運(yùn)行環(huán)境的變化。
7. 更輕松地維護(hù)和擴(kuò)展
Docker 使用的分層存儲(chǔ)以及鏡像的技術(shù),使得應(yīng)用重復(fù)部分的復(fù)用更為容易,也使得應(yīng)用的維護(hù)更新更加簡(jiǎn)單,基于基礎(chǔ)鏡像進(jìn)一步擴(kuò)展鏡像也變得非常簡(jiǎn)單。Docker團(tuán)隊(duì)同各個(gè)開源項(xiàng)目團(tuán)隊(duì)一起維護(hù)了一大批高質(zhì)量的官方鏡像,既可以直接在生產(chǎn)環(huán)境使用,又可以作為基礎(chǔ)進(jìn)一步定制,大大的降低了應(yīng)用服務(wù)的鏡像制作成本。
8. 對(duì)比傳統(tǒng)虛擬機(jī)
特性 | 容器 | 虛擬機(jī) |
---|---|---|
啟動(dòng) | 秒級(jí) | 分鐘級(jí) |
硬盤使用 | MB 級(jí) |
GB 級(jí) |
性能 | 接近原生 | 弱于原生 |
9. 小結(jié)
Docker 比 傳統(tǒng)的物理機(jī)、虛擬機(jī)和傳統(tǒng)的 PaaS 服務(wù)都更具優(yōu)勢(shì),我們選擇 Docker 的目的其實(shí)很簡(jiǎn)單,就是利用它的功能和生態(tài)帶來(lái)的提升我們的工作效率。