容器技术:从基础到实践
1. 容器概述
容器与传统的虚拟化系统(如 VMware 或 KVM)有着本质的区别。传统虚拟化系统允许在虚拟化层(即管理程序)之上运行完整的 Linux 内核和操作系统,每个虚拟机都有自己独立的操作系统内核,位于硬件虚拟化层之上的独立内存空间中,从而实现了工作负载之间的强隔离。
而容器则是共享单个内核,工作负载之间的隔离完全在这个内核中实现,这被称为操作系统虚拟化。libcontainer 的 README 对容器给出了一个简洁的定义:容器是一个独立的执行环境,它共享主机系统的内核,并且(可选)与系统中的其他容器隔离。
容器的主要优势之一是资源效率高,因为不需要为每个隔离的工作负载都配备一个完整的操作系统实例。由于共享内核,隔离任务与底层真实硬件之间的间接层减少了一层。当一个进程在容器内运行时,内核中只有少量代码用于管理容器。相比之下,虚拟机中会有第二层运行,进程对硬件或管理程序的调用需要在处理器的特权模式下进出两次,这会明显减慢许多调用的速度。
不过,容器方法意味着只能运行与底层内核兼容的进程。例如,在 Linux 主机上的 Linux 容器中,Windows 应用程序无法原生运行,但在 Windows 主机上的 Windows 容器中可以运行。因此,容器最好被视为一种特定于操作系统的技术,可以运行与容器服务器内核兼容的任何应用程序或守护进程。
此外,不仅可以在虚拟机内运行容器,还可以在容器内运行虚拟机。这样,就有可能在运行于 Linux 容器内的 Windows 虚拟机中运行 Windows 应用程序。
2. 容器的历史
容器并不是一个全新的概念,它是隔离和封装运行系
超级会员免费看
订阅专栏 解锁全文
14万+

被折叠的 条评论
为什么被折叠?



