容器的主机操作系统有多重要?

jopen 9年前
 

操作系统与容器弹性、可扩展性以及脆弱性的关系有多大?

容器依赖于底层的主机操作系统,操作系统内核通常是Linux的某个版本。运行在该操作系统之上的所有容器将共享相同的操作系统内核,因此容器提供了独特的福利与脆弱性。

既然服务器上的所有容器共享同样的主机操作系统,那么就不需要在每个容器中安装一个操作系统(也就是不必每台虚拟机需要一个单独的操作系统)。这可能会显著减少容器部署时的主机许可成本。还能够显著减少每个操作系统迭代所需要的计算资源—不是10台虚拟机需要10个主机操作系统,大概有30个容器实例的类似系统可能只需要为一个主机操作系统分配CPU、内存以及存储。

但系统中的所有实例同样完全依赖于单个操作系统。如果操作系统宕机,系统中的所有的容器同样将无法使用。此外,操作系统遭遇恶意软件攻击(或者是攻击从容器延伸到操作系统)可能会传导给其他容器并以不受控的方式传播攻击。这与虚拟机的行为完全不同,虚拟机在很大程度上孤立的而且不受这类依赖关系的影响。当太多的容器实例同时争夺操作系统的注意力时,大量访问单个操作系统的I/O子系统可能会导致容器性能退化。

容器迁移选项同样存在局限性。既然容器工作负载共享同样的操作系统内核,那么容器只能够被迁移到另一个与现有系统内核相兼容的系统中。例如,Linux容器无法被迁移到运行Windows服务器的系统中。当有运行相同操作系统的系统之间拥有大量计算容量时这不是个大问题。但当容器的主机操作系统只占整个环境的一小部分时可能就会有问题了(比如少量的容器化SUSE Linux操作系统在拥有大量Windows Server 2012数据中心内运行时)。