目录
云原生(Cloud Native)是一种构建和运行应用程序的方法论,旨在充分利用云平台的优势,如弹性伸缩、持续交付、容错性、微服务架构等。Docker 作为云原生技术栈的关键组件,其引入和普及极大地推动了云原生应用的发展。
下面首先来看下虚拟化技术与容器技术的区别。
一、虚拟化技术与容器技术的区别
虚拟化技术和容器技术都是提高资源利用率、实现应用隔离和可移植性的现代计算技术,但他们的实现机制、资源消耗、隔离程度以及适用场景等方面存在着显著的区别。两者的结构如下图所示:
各部分的含义如下:
- server:代表服务器,主要包含了硬件资源,如 CPU、磁盘、网络设备、内存等。
- Host OS:代表操作系统,如 Linux、Windows 等操作系统。
- Hypervisor:在主机操作系统之上安装了一个虚拟软件,如VMware
- Guest OS:在虚拟机软件上安装的虚拟机操作系统,如上图安装了两个虚拟机操作系统,每个虚拟机操作系统都可以安装自己的应用。
简单来说虚拟化技术是在硬件层面进行抽象,模拟出完整的计算机系统,包括CPU、内存、磁盘和网络设备等,每个虚拟机都有自己的操作系统。那什么是容器化技术的,如上图右侧所示。
容器相对虚拟化技术来说要简单一些,直接安装一个容器管理工具,如 Docker,有了 Docker 之后就能直接创建容器了。容器技术是在操作系统的层面进行抽象,共享宿主机的操作系统内核,但为应用提供隔离的文件系统、网络、进程空间等。容器是基于镜像创建的轻量级、可执行的独立软件包。
虚拟化与容器有相似之处也有很多区别,具体的区别如下:
- 资源消耗:虚拟机会非常消耗硬件资源,因为需要在虚拟机软件之上安装多个虚拟机,每个虚拟机都会消耗一部分硬件资源,这导致较大的资源开销(尤其是内存)和较长的启动时间。容器在这方面会好很多,由于共享宿主机内核,容器启动迅速且资源消耗少,尤其适合需要快速扩展和频繁部署的场景。
- 隔离性:虚拟化提供了更高级别的隔离,因为每个 VM 都是独立的操作系统环境,相互之间完全隔离。容器虽然提供了足够的隔离以保证应用的独立运