大约一年前,我读到过一篇文章,说使用 Docker 容器可以使服务器更加稳定,因为当应用程序发生故障时,容器会崩溃,而不是主机操作系统崩溃。
据我所知,应用程序无法自行导致操作系统崩溃,他们需要一些内核,驱动程序或硬件错误来实现这一点。
Docker 虚拟化是否可以防止主机操作系统崩溃?
答案1
虚拟化不能防止主机操作系统崩溃,但它可能有助于降低风险因素。
Docker 只不过是一个将系统调用从虚拟化程序转换到主机操作系统的接口。因此,一个或多个调用组合仍然可能触发操作系统错误并导致其崩溃。
因此,Docker 比传统虚拟机更容易引发此类问题,因为 Docker 下的虚拟化程序隔离性较差,尽管在 Docker 下发生这种情况的可能性可能比直接在操作系统上运行时要小一些,因为调用经过两个接口而不是一个接口,因此经过双重检查。
Docker 确实对虚拟化程序设置了一些限制,例如最大 RAM 和 CPU,这可能有助于避免系统因过载和资源饱和而崩溃。它还向虚拟化程序隐藏了主机的文件系统(始终可能出现异常),从而避免程序破坏它。