現在說起Docker,想必大家已經不再陌生。Docker自去年首次進入開源軟件市場之后就實現了爆炸式增長。上個月受到Google的公開支持,同時Docker 1.0版本的正式發布更是讓Docker熱潮更上一層。
任何技術的出現到成熟都是需要付出一些代價的,現在,已經有人給Docker潑冷水了。
眾所周知,Docker可以輕松地將應用和服務從開發環境遷移到生產環境,或者從一個服務器環境遷移到另一個環境。有人認為Docker也存在致命弱點,那就是云工作負載的可移植性和管理。他們將其與hypervisors進行比較,并建議VM可能是一種更好的管理云工作負載的方式。Docker容器通過共享的Linux實現,因此會容易產生更多的潛在漏洞,這些漏洞可以影響服務器上每個容器的操作,特別是當底層操作系統出現故障時。在這種情況下,所有容器中的工作負載會出現性能下降。
事實上,Docker對Linux操作系統故障有自己的防御手段: 命名空間具有隔離容器所有進程,包括其他容器和主機操作系統的能力。每個容器都有自己的網絡堆棧。如果一個容器出現故障,另一個容器仍然可以跟其他容器和主機操作系統互動。
Docker的Cgroups在管理資源的同時可以提供隔離功能。Cgroups不僅確保容器共享底層資源,還可以進行檢測以防止其中某個容器耗盡所有資源降低其他容器性能。
如果有問題發生,Docker容器可以自動重啟,從而實現額外的靈活性。你也可以擴展與操作系統之間的依賴關系,這樣進一步降低了單個操作系統影響所有容器的風險。 你要知道核心觀點是,容器比VM有更快更輕便的資源。只要用戶愿意選擇使用單獨的平臺來為所有的容器提供共享的操作系統。容器的真正優勢在于: 一個完整的虛擬機創建和啟動過程可能需要花費幾分鐘的時間,而一個容器可以在幾秒內啟動。
容器為自己內部的應用程序提供更好的性能,而在VM上運行的應用程序會產生由hypervisor運行所帶來的開銷。
正是這些輕量級架構的優勢及更好的性能讓Docker很受歡迎。