Docker 容器技术与虚拟化技术之间的关系

时间:2021-05-02

近几年容器(Container)、Kubernetes等技术在数据中心、云计算、各互联网公司的业务服务中得到广泛应用,和20世纪60年代就兴起的虚拟机(Virtual Machine,VM)技术一样,容器也是一种服务虚拟化技术(Server Virtualization),但是它更加轻量,同时将焦点从Machine转移到Application,极大提高了开发、测试、生产环境部署的效率,不过其安全性和隔离性比虚拟机稍逊一筹,在一些场景下也无法完全替代虚拟机。

1 虚拟化技术分类

在计算机技术中,虚拟化 (virtualization) 是一种资源管理技术,是将计算机的各种实体资源,如服务器 、 网络 、 内存及存储等,予以抽象 、 转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以用比原本的组态更好的方式来应用这些资源。因此,虚拟化的核心是对资源的抽象,我们可以在同一个主机上同时运行多个系统或应用,从而提高系统资源的利用率,实现降低成本 、 方便管理的目的。

虚拟化技术有以下这些层次分类:

这里重点说明平台虚拟化技术。平台虚拟化分为以下几种类型:

(1) 完全虚拟化

虚拟机完全模拟完整的底层硬件环境和特权指令的执行过程,无须修改客户操作系统。例如 Virtualbox、vmware、QEMU 等。

【1】Virtualbox:我们可以在VirtualBox上安装并且执行Solaris、Windows、DOS、Linux、IBM OS/2 Warp、BSD等系统作为客户端操作系统。

【2】vmware: vmware 是业界非常稳定且安全的桌面虚拟机软件, VMware 虚拟机可让我们在一台机器上同时运行二个或更多 Windows 、 DOS 、 LINUX 系统。在虚拟网路,实时快照,拖曳共享文件夹,支持 PXE 等方面均有特别之处,使用 vmware ,我们可在单一的桌面上同时运行不同的操作系统,进行开发 、 测试 、 部署新的应用程序。

预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(如硬盘)或本地已安装的操作系统。

【3】QEMU:QEMU 本身是一个非常强大的虚拟机,它可以利用 Xen、KVM 等技术来加速。加速之后,就可以把客户操作系统的 CPU 指令直接转发到物理 CPU,以提升运行效率。

(2)硬件辅助虚拟化

硬件辅助虚拟化指的是,利用硬件 ( 主要是 CPU ) 来处理敏感指令来实现完全虚拟化的功能,无须修改客户操作系统。例如 VmwareWorkstation , Xen , KVM。

【1】Xen :Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。它打算在单个计算机上运行多达100个满特征的操作系统。操作系统必须进行显式地修改以在Xen上运行。这使得Xen无需特殊硬件支持,就能达到高性能的虚拟化。

【2】KVM:KVM (全称是 Kernel-based Virtual Machine) 是 Linux 下 x86 硬件平台上的全功能虚拟化解决方案。 KVM 允许每个虚拟机有自己的私有硬件,包括网卡、磁盘以及图形适配卡等。

(3)半虚拟化 (paravirtualization)

部分硬件接口以软件的形式提供给客户机操作系统,需要修改客户操作系统,例如早期的 Xen。

(4)操作系统级虚拟化

内核通过创建多个虚拟的操作系统实例 来隔离不同的进程。Docker 容器技术即在此范畴内。

2 比较 Docker 容器技术与传统虚拟化技术
Docker 是内核级的虚拟化,因此可以实现更高的接近原生性能,同时对资源的额外需求很低,内存与硬盘消耗,相对传统虚拟机方式,少很多;
Docker 几乎可以在任意的平台上运行,包括物理机 、 虚拟机 、 公有云 、 私有云 、 个人电脑 、 服务器等,同时支持主流的操作系统发行版本,所以很容易迁移;
启动和停止 Docker 容器可以在秒级实现,这相比传统的虚拟机方式快了一个数量级 ;
因为Docker 容器占用很少的系统资源,所以一台主机上可以同时运行上千个 Docker 容器 ;传统虚拟机方式运行 N 个不同的应用就要启用 N 个虚拟机,而每个虚拟机需要单独分配独占的内存 、 硬盘等资源,对资源的消耗很大,所以一台主机最多只能运行几十个容器,就会达到性能瓶颈。
传统的虚拟机方式提供了相对封闭的隔离,可以说是完全隔离。而 Docker 则利用 Linux 系统上的多种安全防护技术来实现严格的隔离。除此之外,Docker 还改善并加强了容器的安全控制和镜像的安全机制,极大地提高了 Docker 的安全性。
归纳如下:

特 性 Docker 容器 传统虚拟机
启动速度 秒级 分钟级
性能 接近原生 较差
消耗内存 很小 较多
硬盘容量 MB 级 GB 级
单机运行密度 上千个容器 几十个容器
隔离性 安全隔离 完全隔离
迁移性 好 一般

传统虚拟化方式需要有额外的虚拟机管理程序和虚拟机操作系统 。而Docker 容器是直接在宿主机操作系统层面上实现虚拟化,所以属于轻量级虚拟化方案。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章