虚拟化
什么是LXC?
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或LXC不同,KVM客户机可以加载内核模块、运行任何操作系统并使用真正的交换分区。…
- 我可以在VPS上运行Docker吗? 在 KVM VPS 上,可以,没有任何限制——从官方仓库安装 Docker Engine,一切都能正常运行,包括 buildx、Compose 和 Docker-in-Docker。在 OpenVZ 或基于 LXC 的虚拟服务器上,Docker 要么无法运行,要么需要不安全的宿主机配置,因为它需要共享内核虚拟…
- KVM 与 OpenVZ:虚拟化类型为何重要 KVM 是完全硬件虚拟化:你的实例运行自己的内核,且无法看到宿主机。OpenVZ 和 LXC 是共享宿主内核的容器技术,这意味着无法使用自定义内核模块、在旧宿主机上无法使用 WireGuard、Docker 不可靠,并且内存记账允许提供商超卖。如果 VPS 异常便宜,通常是 OpenVZ。…
- KVM与LXC:隔离性与密度 LXC容器共享宿主机内核,启动只需毫秒级,几乎无开销;KVM虚拟机运行自己的内核,有2-5%的开销,但提供真正的安全边界。对于多租户托管,这种区别是决定性的:LXC宿主机上的内核漏洞会影响其上的所有租户。…
- 最便宜但实际可用的 VPS 是什么? 约 4 美元/月即可获得基于真实 KVM 虚拟化的 1 vCPU、1 GB 内存和 20 GB NVMe。这足以运行 WireGuard VPN、DNS 解析器、Tor 中继、小型机器人或静态网站。低于此价格,你几乎肯定买到的是一个超售的容器,而非虚拟机。…
- OnionVPS与其他VPS提供商有何不同? 四件事:没有任何形式的身份验证,仅加密货币支付,不涉及银行卡或银行,覆盖116个国家的138个地点,包括真正的离岸司法管辖区,以及不生成连接日志的架构。再加上仅使用KVM的虚拟化、包含的DDoS保护和每个级别的开放25端口。…
更多来自虚拟化
- KVM
- KVM 是内置于 Linux 内核的完全硬件虚拟化技术,每个客户机都有自己的内核,并通过硬件强制与其他租户隔离。
- OpenVZ
- OpenVZ 是基于容器的虚拟化技术,每个实例共享主机内核,因此客户机无法加载内核模块或运行不同的操作系统。
- 虚拟机监控程序
- 虚拟机监控程序是创建和运行虚拟机的软件层,在它们之间分配物理 CPU、内存和 I/O。
- 嵌套虚拟化
- 嵌套虚拟化允许虚拟机自身运行虚拟机,通过将处理器虚拟化扩展暴露给客户机来实现。
- vCPU
- vCPU是呈现给客户机的虚拟处理器,由物理核心或线程上的调度时间提供支持。
- cloud-init
- cloud-init是使用平台提供的元数据在首次启动时配置虚拟机的标准机制。