官术网_书友最值得收藏!

1.2 為什么要使用Docker

1. Docker容器虛擬化的好處

Docker項目的發起人、Docker公司CTO Solomon Hykes認為,Docker在正確的地點、正確的時間順應了正確的趨勢——如何正確地構建應用。

在云時代,開發者創建的應用必須要能很方便地在網絡上傳播,也就是說應用必須脫離底層物理硬件的限制;同時必須是“任何時間任何地點”可獲取的。因此,開發者們需要一種新型的創建分布式應用程序的方式,快速分發和部署,而這正是Docker所能夠提供的最大優勢。

舉個簡單的例子,假設用戶試圖基于最常見的LAMP(Linux+Apache+MySQL+PHP)組合來構建網站。按照傳統的做法,首先需要安裝Apache、MySQL和PHP以及它們各自運行所依賴的環境;之后分別對它們進行配置(包括創建合適的用戶、配置參數等);經過大量的操作后,還需要進行功能測試,看是否工作正常;如果不正常,則進行調試追蹤,意味著更多的時間代價和不可控的風險。可以想象,如果應用數目變多,事情會變得更加難以處理。

更為可怕的是,一旦需要服務器遷移(例如從亞馬遜云遷移到其他云),往往需要對每個應用都進行重新部署和調試。這些瑣碎而無趣的“體力活”,極大地降低了用戶的工作效率。究其根源,是這些應用直接運行在底層操作系統上,無法保證同一份應用在不同的環境中行為一致。

而Docker提供了一種更為聰明的方式,通過容器來打包應用、解耦應用和運行平臺。這意味著遷移的時候,只需要在新的服務器上啟動需要的容器就可以了,無論新舊服務器是否是同一類型的平臺。這無疑將幫助我們節約大量的寶貴時間,并降低部署過程出現問題的風險。

2. Docker在開發和運維中的優勢

對開發和運維(DevOps)人員來說,最夢寐以求的效果可能就是一次創建或配置,之后可以在任意地方、任意時間讓應用正常運行,而Docker恰恰是可以實現這一終極目標的“瑞士軍刀”。具體說來,在開發和運維過程中,Docker具有如下幾個方面的優勢:

? 更快速的交付和部署。使用Docker,開發人員可以使用鏡像來快速構建一套標準的開發環境;開發完成之后,測試和運維人員可以直接使用完全相同的環境來部署代碼。只要是開發測試過的代碼,就可以確保在生產環境無縫運行。Docker可以快速創建和刪除容器,實現快速迭代,節約開發、測試、部署的大量時間。并且,整個過程全程可見,使團隊更容易理解應用的創建和工作過程。

? 更高效的資源利用。運行Docker容器不需要額外的虛擬化管理程序(Virtual Machine Manager, VMM,以及Hypervisor)的支持,Docker是內核級的虛擬化,可以實現更高的性能,同時對資源的額外需求很低。與傳統虛擬機方式相比,Docker的性能要提高1~2個數量級。

? 更輕松的遷移和擴展。Docker容器幾乎可以在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、個人電腦、服務器等,同時支持主流的操作系統發行版本。這種兼容性讓用戶可以在不同平臺之間輕松地遷移應用。

? 更簡單的更新管理。使用Dockerfile,只需要小小的配置修改,就可以替代以往大量的更新工作。所有修改都以增量的方式被分發和更新,從而實現自動化并且高效的容器管理。

3. Docker與虛擬機比較

作為一種輕量級的虛擬化方式,Docker在運行應用上跟傳統的虛擬機方式相比具有如下顯著優勢:

? Docker容器很快,啟動和停止可以在秒級實現,這相比傳統的虛擬機方式(數分鐘)要快得多;

? Docker容器對系統資源需求很少,一臺主機上可以同時運行數千個Docker容器(在IBM服務器上已經實現了同時運行10K量級的容器實例);

? Docker通過類似Git設計理念的操作來方便用戶獲取、分發和更新應用鏡像,存儲復用,增量更新;

? Docker通過Dockerfile支持靈活的自動化創建和部署機制,以提高工作效率,并標準化流程。

Docker容器除了運行其中的應用外,基本不消耗額外的系統資源,在保證應用性能的同時,盡量減小系統開銷。傳統虛擬機方式運行N個不同的應用就要啟用N個虛擬機(每個虛擬機需要單獨分配獨占的內存、磁盤等資源),而Docker只需要啟動N個隔離得“很薄的”容器,并將應用放進容器內即可。應用獲得的是接近原生的運行性能。

當然,在隔離性方面,傳統的虛擬機方式提供的是相對封閉的隔離。但這并不意味著Docker不安全。Docker利用Linux系統上的多種防護技術實現了嚴格的隔離可靠性,并且可以整合眾多安全工具。從1.3.0版本開始,Docker重點改善了容器的安全控制和鏡像的安全機制,極大地提高了使用Docker的安全性。在已知的大規模應用中,目前尚未出現值得擔憂的安全隱患。

表1-1比較了使用Docker容器技術與傳統虛擬機技術的各種特性,可見容器技術在很多應用場景下都具有巨大的優勢。

表1-1 Docker容器技術與傳統虛擬機技術的比較

主站蜘蛛池模板: 佛坪县| 星座| 鲁甸县| 保德县| 庐江县| 稻城县| 扎兰屯市| 铜山县| 巴马| 米林县| 泸州市| 浏阳市| 武安市| 怀柔区| 天等县| 荣昌县| 凤庆县| 霍城县| 东辽县| 敦煌市| 云霄县| 堆龙德庆县| 克东县| 平原县| 云浮市| 襄垣县| 鄄城县| 宝丰县| 大庆市| 湄潭县| 昌图县| 甘洛县| 汉源县| 邮箱| 常德市| 济源市| 聂荣县| 张家界市| 修文县| 宜黄县| 琼中|