虚拟化

什么是LXC?

又称: Linux Containers
定义

LXC is Linux-native containerisation that isolates processes with namespaces and cgroups while sharing the host kernel. LXC is excellent inside a trust boundary you already own and weak as a multi-tenant boundary, because a kernel escape affects every container on the host.

为什么LXC很重要

LXC 在您已拥有的信任边界内表现出色,但作为多租户边界较弱,因为内核逃逸会影响主机上的所有容器。

LXC的实际应用

使用 LXC,您获得一个共享宿主内核的轻量容器。您可通过 lxc 命令套件或 API 进行管理,并查看 cgroup 统计以监控 CPU 和内存压力。调优主要涉及命名空间和 cgroup 限制:固定进程、设置内存上限。出错代价是暴露:内核逃逸会危害宿主机上的所有容器,因此您将宿主机视为单一信任域,并在宿主机层面而非每个容器层面规划故障转移。

人们对LXC常见的误解

人们将 LXC 视为与 KVM 等同的安全边界。事实并非如此:容器共享内核,该内核的缺陷可突破任何容器。修正观点为:LXC 用于在您拥有的信任边界内进行隔离,而非用于租户可能怀有敌意的多租户托管。

LXC —— 常见问题

LXC 和 Docker 一样吗?

不一样。Docker 基于 LXC 等容器原语构建,但增加了镜像管理、分层和编排。LXC 更像轻量虚拟机:在其中运行完整发行版,并直接使用 systemd 或 init 管理。Docker 面向应用打包;LXC 面向系统虚拟化。

我可以使用自定义内核运行 LXC 吗?

这取决于宿主机。某些提供商(如 OnionVPS)提供完整 root 权限并允许自定义内核,但 LXC 共享宿主内核,因此自定义内核不适用于容器本身。若要自定义内核,应使用 KVM。LXC 受宿主提供的内核版本和配置限制。

LXC在哪些地方出现

更多来自虚拟化

KVM
KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
OpenVZ
OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
虚拟机监控程序
虚拟机监控程序是创建和运行虚拟机的软件层,在它们之间分配物理 CPU、内存和 I/O。
嵌套虚拟化
嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
vCPU
vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。
cloud-init
cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。