1.什么是Docker?
簡單地講,可以將
Docker容器理解為一種輕量級的沙盒( sandbox ),
每個容器內運行著一個應用,不同的容器相互隔離,容器之間也可以通過網路互相通信,容器的創建和停止十分快速,幾乎跟創建和終止原生應用一致;另外,容器自身對系統資源的額外需求也十分有限,遠遠低于傳統虛擬機, 很多時候,甚至直接把容器當作應用本身也沒有任何問題,
2.為什么使用Docker?
1. Docker 窯器虛擬化的好處
常見的 LAMP (Linux+Apache+MySQL+PHP )組合來構建網站 , 按照傳統的做法,首先需要安裝 Apache 、MySQL 和 PHP以及它們各自運行所依賴的環境;之后分別對它們進行配置(包括創建合適的用戶、配置引數等);經過大量的操作后,還需要進行功能測驗,看是否作業正常;如果不正常,則進行除錯追蹤,意味著更多的時間代價和不可控的風險,可以想象,如果應用數目變多,事情會變得更加難以處理,
如果一旦需要服務器遷移,往往需要對每個應用都進行重新部署和除錯, 這些瑣碎而無趣的“體力活”,極大地降低了用戶的作業效率,
究其根源,是這些應用直接運行在底層作業系統上,無法保證同一份應用在不同的環境中行為一致,
而 Docker 提供了一種更為聰明的方式,通過容器來打包應用、解藕應用和運行平臺 ,這意味著遷移的時候,只需要在新的服務器上啟動需要的容器就可以了,無論新舊服務器是否是同一型別的平臺 , 這無疑將幫助我們節約大量的寶貴時間,并降低部署程序出現問
的風險,
2 . Docker在開發和運維中的優勢
- 更快速的交付和部署:使用 Docker,開發人員可以使用鏡像來快速構建一套標準的開發環境;開發完成之后,測驗和運維人員可以直接使用完全相同的環境來部署代碼,只要是開發測驗過的代碼,就可以確保在生產環境無縫運行,
- 更高效的資源利用:運行 Docker 容器不需要額外的虛擬化管理程式(
Virtual Machine Manager,VMM,以及Hypervisor)的支持, Docker 是內核級的虛擬化,可以實作更高的性能,同時對資源的額外需求很低 , - 更輕松的遷移和擴展:Docker 容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等,同時支持主流的作業系統發行版本,
- 更簡單的更新管理,使用
Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新作業,所有修改都以增量的方式被分發和更新,從而實作自動化并且高效的容器管理,
3. Docker 與虛擬機比較
- Docker 容器很快,啟動和停止可以在秒級實作,這相比傳統的虛擬機方式(數分鐘)要快得多;
- Docker 容器對系統資源需求很少,一臺主機上可以同時運行數千個 Docker 容器(在IBM 服務器上已經實作了同時運行! OK 量級的容器實體);
- Docker 通過類似 Git 設計理念的操作來方便用戶獲取、分發和更新應用鏡像,存盤復用,增量更新;
- Docker 通過 Dockerfile 支持靈活的自動化創建和部署機制,以提高作業效率,并標準化流程 ,

3.Docker與虛擬化
虛擬化的核心是對資源的抽象,目標往往是為了在同一個主機上同時運行多個系統或應用,從而提高系統資源的利用率,并且帶來降低成本、方便管理和容錯容災等好處,
基于軟體的虛擬化從物件所在的層次,又可以分為應用虛擬化和平臺虛擬化(通常說的虛擬機技術即屬于這個范疇) , 前者一般指的是一些模擬設備或諸如 Wine 這樣的軟體,后者又可以細分為幾個子類:
- 完全虛擬化 , 虛擬機模擬完整的底層硬體環境和特權指令的執行程序,客戶作業系統無須進行修改,
- 硬體輔助虛擬化,利用硬體 (主要是 CPU )輔助支持(目前 x86 體系結構上可用的硬體輔助虛擬化技術包括 Intel-VT 和 AMD-V)處理敏感指令來實作完全虛擬化的功能,客戶作業系統無須修改 ,例如
VMware Workstation , Xen, KVM; - 部分虛擬化,只針對部分硬體資源進行虛擬化,客戶作業系統需要進行修改,現在有些虛擬化技術的早期版本僅支持部分虛擬化;
- 虛擬化(
paravirtualization),部分硬體介面以軟體的形式提供給客戶機作業系統,客戶作業系統需要進行修改, - 作業系統級虛擬化,內核通過創建多個虛擬的作業系統實體(內核和庫)來隔離不同的行程,

傳統方式是在硬體層面實作虛擬化,需要有額外的虛擬機管理應用和虛擬機作業系統層 , Docker 容器是在作業系統層面上實作虛擬化,直接復用本地主機的作業系統,因此更加輕量級 ,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/194040.html
標籤:其他
