優勢:1、更快速的交付和部署;2、更有效率的虛擬化;3、更輕鬆的遷移和擴展;4、更簡單的管理;5、CPU/記憶體的低消耗。不足:1、無法在32bit的linux、Windows或unix環境下使用;2、docker對disk的管理比較有限等等。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
作為一種新興的虛擬化方式,Docker跟傳統的虛擬化方式相比有著眾多的優勢。首先, Docker容器的啟動可以在秒級實現,這相比傳統的虛擬機器方式要快得多。其次, Docker對系統資源的使用率很高,一台主機上可以同時執行數千個Docker容器。容器除了運作其中應用程式外,基本上不消耗額外的系統資源,使得應用的效能很高,同時系統的開銷盡量小。傳統虛擬機方式運行10個不同的應用就要起10個虛擬機,而Docker只需要啟動10個隔離的應用機。
Docker 在下列幾個方面有較大的優勢。
1)更快速的交付和部署
對開發和維運(devops)人員來說,最希望的就是一次創建或配置,可以在任何地方正常運行。開發者可以使用標準的鏡像來建構一套開發容器,開發完成之後,維運人員可以直接使用這個容器來部署程式碼。 Docker可以快速建立容器,快速迭代應用程序,並讓整個流程全程可見,使團隊中的其他成員更容易理解應用程式是如何建立和工作的。 Docker容器很輕很快!容器的啟動時間是秒級的,大量地節省開發、測試、部署的時間。
2)更有效率的虛擬化
Docker容器的運作不需要額外的hypervisor支持,它是核心級的虛擬化,因此可以實現更高的效能和效率。
3)更輕鬆的遷移和擴展
4)更簡單的管理
#5)CPU/記憶體的低消耗
6)快速開/關機
7)跨雲端運算基礎架構
Docker的限制有哪些?
Docker並不是全能的,設計之初也不是KVM之類虛擬化手段的替代品,簡單總結幾點:
1)Docker是基於Linux 64bit的,無法在32bit的linux/Windows/unix環境下使用。
2)LXC是基於Cgroup等Linux kernel功能的,因此Container的Guest系統只能是Linux base的。
3)隔離性相比KVM之類的虛擬化方案還是有些欠缺,所有container公用一部分的運作庫。
網路管理相對簡單,主要是基於namespace隔離。
4)cgroup的cpu和cpuset提供的cpu功能相比KVM的等虛擬化方案相比難以度量(所以dotcloud主要是按內存收費)。
5)docker對disk的管理比較有限。
6)container隨著用戶進程的停止而銷毀,container中的log等用戶資料不便收集。
所以針對以上限制可以分為以下的適用性:
針對1-2,有windows base應用的需求的基本可以pass了。
針對3-5,主要是看用戶的需求,到底是需要一個container還是一個VM,同時也決定了docker作為 IaaS 不太可行。
針對6-7,雖然是docker本身不支援的功能,但可以透過其他手段解決(disk quota, mount –bind)。
總之,選用container還是vm,就是在隔離性和資源多用性上做權衡。另外即便docker 0.7能夠支援非AUFS的檔案系統,但是由於其功能還不穩定,商業應用或許會存在問題,而AUFS的穩定版需要kernel 3.8, 所以如果想複製dotcloud的成功案例,可能需要考慮升級kernel或換用ubuntu的server版本(後者提供deb更新)。這也是為什麼開源界更傾向於支援ubuntu的原因(kernel版本)。
擴展知識:Docker安全性問題
1)Docker環境安全性
Docker的勢頭在過去的12個月裡十分火熱,很多人表示很少見如此能夠吸引產業興趣的新興技術。然而,當興奮轉化為實際部署時,企業需要注意Docker的安全性。了解Docker的人都知道,Docker利用容器將資源進行有效隔離。因此容器相當於與Linux OS和hypervisor有著幾乎相同的安全運行管理和組態管理層級。但當Docker涉及安全營運與管理,以及具有保密性、完整性和可用性的通用控制項的支援時,Docker可能會讓你失望。
當Docker運行在雲端提供者平台上時,Docker安全性變得更加複雜。你需要知道雲端供應商正在做什麼,或許你正在別人共享一台機器。 Docker雖然容器沒有內建的安全因素,而且像Docker這樣的新興技術很難有比較全面的安全措施,但這並不代表以後也不會出現。
2)Docker確保容器部署安全性
也有專家將Docker安全性問題的實質定位於配置安全,認為Docker目前的問題是很難配置一個安全的容器。雖然現在Docker的開發人員透過建立非常小的容器來降低攻擊面,但問題在於大型企業內部在生產環境中運行Docker容器的員工需要有更多的可見性和可控性。企業在部署數千或數萬台Docker容器時,能夠確保這些Docker容器都遵守企業安全策略進行配置是至關重要的事情。
Docker為解決這個問題,就需要增加Docker容器部署的即時可見性,同時實施企業制定的安全性策略。也有一些廠商為此推出解決方案,為營運商提供了即時可見性並幫助他們執行容器層級的虛擬基礎設施的安全策略。
推薦學習:《docker影片教學》
以上是docker的優點和缺點有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!