知识卡片

容器与虚拟机的隔离边界不同

专业/工作 · 517.i

内容

虚拟机靠 hypervisor 抽象硬件,让多个操作系统共享同一硬件、彼此隔离;容器不虚拟化硬件,而是共享宿主机内核,靠 Linux 内核的 namespace(限制进程能看到哪些资源)和 cgroups(限制进程能用多少资源)这两个特性,在同一个内核上划出多个隔离的执行环境。共享的层级不同,决定了容器比虚拟机轻得多——不需要为每个隔离环境启动一整个操作系统。发散:这也解释了容器隔离性天然弱于虚拟机(内核是共享攻击面),所以多租户场景下才会出现 gVisor、Kata Containers 这类”用轻量虚拟化包一层容器”的折中方案,本质是在轻量和隔离强度之间找中间点。

参考来源

《Cloud Native Spring in Action》第1章《Introduction to cloud native》