一、物理机
二、虚拟机
三、容器
那虚拟机和容器有什么异同呢??接下来详细阐述
一、虚拟机技术
虚拟机(VM)是计算机系统的仿真。简而言之,它可以在实际上是一台计算机的硬件上运行看似多台单独的计算机。
操作系统(OS)及其应用程序共享来自单个主机服务器或主机服务器池的硬件资源。每个VM都需要其自己的基础OS,并且硬件已虚拟化。系统管理程序或虚拟机监视器是创建和运行VM的软件,固件或硬件。它位于硬件和虚拟机之间,是虚拟化服务器所必需的。
自负担得起的虚拟化技术和云计算服务问世以来,各种规模的IT部门都采用虚拟机(VM)作为降低成本和提高效率的一种方式。
但是,VM会占用大量系统资源。每个VM不仅运行操作系统的完整副本,还运行操作系统需要运行的所有硬件的虚拟副本。这样很快就增加了很多RAM和CPU周期。与运行单独的实际计算机相比,这仍然是经济的,但是对于某些应用程序来说,它可能会过大,从而导致了容器的开发。
虚拟机的好处
- 适用于应用程序的所有操作系统资源
- 建立管理工具
- 建立安全工具
- 众所周知的安全控制
二、容器
使用容器,无需像虚拟机(VM)一样虚拟化基础计算机,而只需虚拟化OS。
容器位于物理服务器及其主机操作系统(通常为Linux或Windows)的顶部。每个容器共享主机OS内核,通常也共享二进制文件和库。共享组件是只读的。共享操作系统资源(例如库)可大大减少重现操作系统代码的需求,并且意味着服务器可以通过单个操作系统安装来运行多个工作负载。因此,容器非常轻便-大小仅为兆字节,只需几秒钟即可启动。与容器相比,VM运行只需几分钟,并且比同等容器大一个数量级。
与VM相比,容器所需的全部是足够的操作系统,支持程序和库以及用于运行特定程序的系统资源。实际上,这意味着在具有容器的单个服务器上放置的应用程序的数量是在VM上放置的应用程序的两倍至三倍。此外,使用容器可以为开发,测试和部署创建一个可移植的一致操作环境。
容器种类
Linux容器(LXC) -最初的Linux容器技术是Linux容器,通常称为LXC。LXC是Linux操作系统级别的虚拟化方法,用于在单个主机上运行多个隔离的Linux系统。
Docker — Docker起初是一个构建单应用程序LXC容器的项目,它对LXC进行了几处更改,使容器更易于携带和使用。后来它变成了自己的容器运行时环境。从较高的层次上讲,Docker是一个Linux实用程序,可以有效地创建,运送和运行容器。
容器的好处
- 减少IT管理资源
- 减少快照的大小
- 更快地旋转应用程序
- 减少和简化安全更新
- 更少的代码来传输,迁移和上传工作负载
三、虚拟机使用与容器使用
容器和VM都有优点和缺点,最终的决定取决于您的特定需求,但是有一些通用的经验法则。
- 当您需要在服务器上运行多个应用程序或需要管理多种操作系统时,VM是运行需要所有操作系统资源和功能的应用程序的更好选择。
- 当您的首要任务是最大化在最少数量的服务器上运行的应用程序的数量时,容器是一个更好的选择。
对比项 | 虚拟化 | 对比结果 | 容器 |
快速创建、删除 | 启动Guest OS+启动应用 | << | 启动应用 |
启动时间 | 以分钟为单位 | << | 以毫秒为单位 |
交付、部署 | 虚拟机镜像 | == | 容器镜像 |
密度 | 单Node 10~100 | << | 单Node 100~1000 |
更新管理 | 向虚拟机推送安装、升级应用软件补丁包 | << | 迭代式更新,修改Docker file,对增量内容进行分发存储、传输、节点启动和恢复迅速 |
Windows的支持 | 支持 | == | 支持 |
稳定性 | KVM、Xen、VMware都已经很稳定 | >> | 每月更新一个版本 |
安全性 | 硬件(完全)隔离:Guest OS运行在非root模式,更安全 | >> | 进程级隔离:Docker具有宿主机root权限,可能不太安全 |
监控成熟度 | Host、Hypervisor、VM的 监控工具在生产环境已使用多年 | >> | 还在发展过程中 |
高可用性 | 武器库很丰富:快照、克隆、HA、动态迁移、异地容灾、异地双活 | >> | 通过业务本身的高可用性来保证 |
管理平台成熟度 | 以OpenStack、vCenter、汉柏OPV-Suite为代表,已经在生产环境使用多年 | >> | 以k8s为代表,还在快速发展过程中 |