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