使用容器有一些潜在的优势,但不要直接忽略它可能带来的挑战。
进入虚拟化时代的一大趋势就是实现容器化。容器化使应用程序虚拟化成为可能,而非操作系统虚拟化(通过虚拟服务器完成)。
想要用容器负载应用程序的人有许多不同的选择。Docker可能是最知名的容器平台,但其他供应商如Citrix也支持容器。甚至微软在未来Windows Server版本中也将使用容器。
容器变得如此受欢迎是因为它可以提供虚拟服务器无法匹敌的好处。然而,和其他任何技术一样,应用程序容器也有优点和缺点。而使用容器有明确的优势,也有一些必须考虑的消极因素。显然对于这些问题,不同的供应商有不同的解决方案。但大多数容器平台仍有利有弊。
想要了解应用程序容器的优点,你必须全面理解容器是如何工作的。容器为应用程序提供隔离边界。如果一个服务器或虚拟机运行多个应用程序,这些应用程序共享操作系统资源。如果有人破解应用,黑客可能会控制同一服务器上运行的其他应用程序,甚至可能危及服务器操作系统。
这不仅仅是管理者所关心的安全漏洞。如果一个应用程序消耗过量的CPU资源,或者应用程序有内存泄漏,那么应用程序使用的资源可能会影响其他服务器上运行的应用程序。
如今管理员避免此类问题的方法一般是通过使用服务器虚拟化。通过托管每个在自己的虚拟机上运行的应用程序,管理员可以创建一个应用程序之间的隔离边界。这种方法很受用,但也存在缺点。每个应用程序运行在一个单独的虚拟机上可能导致虚拟机蔓延。此外,因为每个虚拟机都有自己的操作系统,虚拟机蔓延可能导致许可成本变高(杀毒应用程序、操作系统备份应用程序等),硬件资源利用率也会降低。
容器在应用程序级别创建隔离边界。这意味着多个应用程序可以存在于单一的操作系统,这些应用程序无法互相干扰。
应用程序容器提供的好处是相对直观的。因为你不再需要为每个应用程序创建一个单独的虚拟机,虚拟机管理也越来越少。此外,还可以更有效地利用硬件资源,因为每个应用程序无需在单独的操作系统上运行,硬件资源能够更效率地利用也可会成为一种性能。
这取决于你使用哪一种容器化解决方案,便携式容器也可能使应用程序。这种可移植性意味着可以单独处理虚拟机和应用的生命周期管理,从而使操作更简便。
当然,应用程序容器也有其缺点。最常提到的缺点似乎是很难建立和管理容器。由于Docker是一个基于Linux的解决方案,Windows管理员在设置Docker容器时感到挫败和困惑的情况屡见不鲜。即使对于那些具有Linux经验的人来说,Docker也有一个重要的过渡。
尽管存在过渡时期,使用容器的最大缺点可能是存在安全隐患。容器用来隔离应用程序,但请记住,运行在服务器上的容器化应用程序共享一个操作系统。因此,操作系统(或容器化引擎)可能成为一个漏洞。会出现哪些问题呢?如果黑客针对服务器的操作系统发起拒绝服务攻击,可能导致多个应用程序停机。同样的,如果由于内核级失败导致操作系统崩溃会怎样呢?
一些旧的应用程序也可能存在问题。之前开发人员构建的应用程序都带有这样一种假设——应用程序具有访问操作系统的root权限。如果将这样一个应用程序容器化,它可能无法工作,或者它可能会将服务器的操作系统置于风险之中。实际结果在很大程度上依赖于所使用的产品。一些容器化产品可以处理这样的应用程序,但其他人不能不考虑安全问题。
如你所知,应用程序容器有优点和缺点。随着时间的推移,容器可能会变得更安全、更易于使用,就像服务器虚拟化也越来越棒。