madacoda Asked: 2020-05-06 08:31:32 +0800 CST2020-05-06 08:31:32 +0800 CST 2020-05-06 08:31:32 +0800 CST Unikernels 与容器有何不同? 772 Unikernels 是一个新事物,我很难理解它们的用例是什么。 Docker Containers 的存在已经为我能想到的任何用例提供服务。 那么 Unikernel 的用途是什么? linux kernel containers 1 个回答 Voted Best Answer Omar Buhidma 2020-05-06T08:47:37+08:002020-05-06T08:47:37+08:00 容器与物理管理程序上的其他容器共享内核空间。通常,unikernels 不会。所有的功能差异基本上都是这种根本差异的表现。 例如,容器具有更大的内核空间攻击面,因为容器的内核是通用的:任何应用程序都可以在正确操作系统的任何容器中运行。unikernel 被定制为仅包含正在运行的应用程序所需的子系统——只有该应用程序可以在适当的 unikernel 中运行,因此 unikernel 的攻击面要小得多。 此外,unikernel 可以更直接地访问底层硬件——因此它们比容器更高效(也是由于内核尺寸更小,尽管这在很大程度上取决于在特定 hypervisor 上运行的容器或 unikernel 的数量)。此外,传统上,unikernels(这种情况正在发生变化)只能运行一个进程,因此对于在传统 unikernels 中运行的应用程序来说,分叉不是一种选择。 因此,unikernel 更安全、更快;但更适合定制,因此不太通用。它们旨在用于任何优先考虑效率和安全性而不是操作系统再利用和标准化的工作流程。
容器与物理管理程序上的其他容器共享内核空间。通常,unikernels 不会。所有的功能差异基本上都是这种根本差异的表现。
例如,容器具有更大的内核空间攻击面,因为容器的内核是通用的:任何应用程序都可以在正确操作系统的任何容器中运行。unikernel 被定制为仅包含正在运行的应用程序所需的子系统——只有该应用程序可以在适当的 unikernel 中运行,因此 unikernel 的攻击面要小得多。
此外,unikernel 可以更直接地访问底层硬件——因此它们比容器更高效(也是由于内核尺寸更小,尽管这在很大程度上取决于在特定 hypervisor 上运行的容器或 unikernel 的数量)。此外,传统上,unikernels(这种情况正在发生变化)只能运行一个进程,因此对于在传统 unikernels 中运行的应用程序来说,分叉不是一种选择。
因此,unikernel 更安全、更快;但更适合定制,因此不太通用。它们旨在用于任何优先考虑效率和安全性而不是操作系统再利用和标准化的工作流程。