使用容器有一些潛在的優勢,但不要直接忽略它可能帶來的挑戰。
進入虛擬化時代的一大趨勢就是實現容器化。容器化使應用程序虛擬化成為可能,而非操作系統虛擬化(通過虛擬服務器完成)。
想要用容器負載應用程序的人有許多不同的選擇。Docker可能是最知名的容器平臺,但其他供應商如Citrix也支持容器。甚至微軟在未來Windows Server版本中也將使用容器。
容器變得如此受歡迎是因為它可以提供虛擬服務器無法匹敵的好處。然而,和其他任何技術一樣,應用程序容器也有優點和缺點。而使用容器有明確的優勢,也有一些必須考慮的消極因素。顯然對于這些問題,不同的供應商有不同的解決方案。但大多數容器平臺仍有利有弊。
想要了解應用程序容器的優點,你必須全面理解容器是如何工作的。容器為應用程序提供隔離邊界。如果一個服務器或虛擬機運行多個應用程序,這些應用程序共享操作系統資源。如果有人破解應用,黑客可能會控制同一服務器上運行的其他應用程序,甚至可能危及服務器操作系統。
這不僅僅是管理者所關心的安全漏洞。如果一個應用程序消耗過量的CPU資源,或者應用程序有內存泄漏,那么應用程序使用的資源可能會影響其他服務器上運行的應用程序。
如今管理員避免此類問題的方法一般是通過使用服務器虛擬化。通過托管每個在自己的虛擬機上運行的應用程序,管理員可以創建一個應用程序之間的隔離邊界。這種方法很受用,但也存在缺點。每個應用程序運行在一個單獨的虛擬機上可能導致虛擬機蔓延。此外,因為每個虛擬機都有自己的操作系統,虛擬機蔓延可能導致許可成本變高(殺毒應用程序、操作系統備份應用程序等),硬件資源利用率也會降低。
容器在應用程序級別創建隔離邊界。這意味著多個應用程序可以存在于單一的操作系統,這些應用程序無法互相干擾。
應用程序容器提供的好處是相對直觀的。因為你不再需要為每個應用程序創建一個單獨的虛擬機,虛擬機管理也越來越少。此外,還可以更有效地利用硬件資源,因為每個應用程序無需在單獨的操作系統上運行,硬件資源能夠更效率地利用也可會成為一種性能。
這取決于你使用哪一種容器化解決方案,便攜式容器也可能使應用程序。這種可移植性意味著可以單獨處理虛擬機和應用的生命周期管理,從而使操作更簡便。
當然,應用程序容器也有其缺點。最常提到的缺點似乎是很難建立和管理容器。由于Docker是一個基于Linux的解決方案,Windows管理員在設置Docker容器時感到挫敗和困惑的情況屢見不鮮。即使對于那些具有Linux經驗的人來說,Docker也有一個重要的過渡。
盡管存在過渡時期,使用容器的最大缺點可能是存在安全隱患。容器用來隔離應用程序,但請記住,運行在服務器上的容器化應用程序共享一個操作系統。因此,操作系統(或容器化引擎)可能成為一個漏洞。會出現哪些問題呢?如果黑客針對服務器的操作系統發起拒絕服務攻擊,可能導致多個應用程序停機。同樣的,如果由于內核級失敗導致操作系統崩潰會怎樣呢?
一些舊的應用程序也可能存在問題。之前開發人員構建的應用程序都帶有這樣一種假設——應用程序具有訪問操作系統的root權限。如果將這樣一個應用程序容器化,它可能無法工作,或者它可能會將服務器的操作系統置于風險之中。實際結果在很大程度上依賴于所使用的產品。一些容器化產品可以處理這樣的應用程序,但其他人不能不考慮安全問題。
如你所知,應用程序容器有優點和缺點。隨著時間的推移,容器可能會變得更安全、更易于使用,就像服務器虛擬化也越來越棒。