因为虚拟机已经是比较普及和成熟的技术,所以文章主要重点是介绍一下容器,然后容器和虚拟机的区别。
首先我们来看一下虚拟机和容器的架构图:
架构图
虚拟机
图中左侧是虚拟机的架构。从左图中看出,我们有4个操作系统(Operating System) 。他们是 Host Operating System 和 3个 Guest Operating System。
由于有了多个操作系统,所以虚拟机的架构中我们知道每个虚机中都有一个独立的Kernel.
什么是Kernel?
简单来讲Kernel 就是连接操作系统(OS)和硬件(Hardware)的一个中间组件。
大概个架构图如下
Kernel
容器
架构图的右侧为容器架构,很明显图中只有一个操作系统,即只有一个独立的Kernel.
我们知道每个操作系统有多个进程(Process)
简单来讲容器可以理解为进程沙盒(sandbox)
那到底这个进程沙盒里装了些什么呢?
- process namespace (进程命名空间): 来规定可以使用什么资源
- Cgroups (控制组) : 来规定可以用多少资源:如CPU,内存, 网络等
- Union-capable file system: 把不同文件联合到一个挂载点的文件系统服务
相对虚拟机架构来讲,容器架构有什么好处呢?
左图的虚拟机架构中,我们的主机有Host 三个不同的操作系统,这个就意味着需要模拟(emulate) 三个操作系统。
对比右图的容器架构中,我们的3个容器都在一个操作系统上运行,并不需要模拟任何操作系统。所以相对左图我们会消耗更少的资源,并达到跟虚拟机架构中等同的效果。
用一张图大概描述容器相对虚拟机的优势
对比图
- 容器架构降低了硬件成本
- 更快速的部署开发/测试/生产环境
- 更简便的维护开发/测试/生产环境
- 与微服务架构更为契合
网友评论