关于容器和虚拟机¶
Incus 支持两种不同类型的实例:系统容器和虚拟机。
Incus 在系统容器的实现中使用了 Linux 内核的功能(例如namespaces
和cgroups
)。这些功能提供了一种仅软件的方式来隔离和限制正在运行的系统容器。系统容器只能基于 Linux 内核。
运行虚拟机时,Incus 使用主机系统的硬件功能来隔离和限制正在运行的虚拟机。因此,虚拟机可用于运行例如与主机系统不同的操作系统。
虚拟机 |
应用程序容器 |
系统容器 |
---|---|---|
使用专用内核 |
使用主机的内核 |
使用主机的内核 |
可以托管不同类型的操作系统 |
只能托管 Linux |
只能托管 Linux |
使用更多资源 |
使用更少资源 |
使用更少资源 |
需要硬件虚拟化 |
仅软件 |
仅软件 |
可以托管多个应用程序 |
可以托管单个应用程序 |
可以托管多个应用程序 |
受 Incus 支持 |
受 Docker 支持 |
受 Incus 支持 |
应用程序容器与系统容器¶
应用程序容器(例如由 Docker 提供)打包单个进程或应用程序。另一方面,系统容器模拟与您在主机或虚拟机上运行的类似的完整操作系统。您可以在 Incus 系统容器中运行 Docker,但您不会在 Docker 应用程序容器中运行 Incus。
因此,应用程序容器适合提供单独的组件,而系统容器提供库、应用程序、数据库等的完整解决方案。此外,您可以使用系统容器创建不同的用户空间并隔离属于每个用户空间的所有进程,这并非应用程序容器的预期用途。
虚拟机与系统容器¶
虚拟机使用主机系统的硬件功能创建物理机的虚拟版本。主机系统和虚拟机之间的边界由这些硬件功能强制执行。另一方面,系统容器使用主机系统中已运行的操作系统内核,而不是启动自己的内核。如果您运行多个系统容器,它们都共享相同的内核,这使得它们比虚拟机更快、更轻量级。
使用 Incus,您可以创建系统容器和虚拟机。如果所有所需的功能都与主机操作系统的内核兼容,则应使用系统容器来利用更小的尺寸和更高的性能。如果需要主机操作系统内核不支持的功能或想要运行完全不同的操作系统,请使用虚拟机。