容器化技术的目的:快速对应用进行标准化部署
一、 应用部署演化
物理机时代——虚拟机时代——容器化时代
1. 物理机时代
单台物理主机,在这台物理机上需要安装一系列的应用部署安装和运行维护
缺点
-
部署非常慢
要采购主机,找地方存放,安装系统,安装各种组件 -
成本高
一个外网的应用服务器一般都需要过万的价格进行采购 -
资源浪费
资源不平衡,比如A机上安装了一个应用服务是对CPU要求非常高的,但是对内存磁盘的要求比较低,那我们的内存和磁盘就得不到应用 -
难于扩展和迁移
对机器进行横向扩展是一件比较麻烦的事情,比如主机迁移受制于硬件
2. 虚拟化时代
虚拟机时代(由于物理机部署的种种问题,虚级化技术就随之产生了,在一台物理主机上,通过硬件底层的虚拟化支持可以虚拟出多台虚拟主机,每一个虚拟机都是一台独立的电脑,都拥有自己的硬件(CPU,内存,硬盘),和操作系统(在操作系统上安装我们需要的软件)。虚拟化技术的出现可以让我们的物理机硬件资源得到更加充分的利用)
优点
-
多部署
一台主机上可以部署多个虚拟主机,各个虚拟主机间资源相互独立,任何一个虚拟机内部出现了问题都不会对其他虚拟机造成影响 -
资源池
虚拟化时代把硬件资源看做一个池子,这个池子中的资源是可以做共享的,会有一个(虚拟机监视器 Hypervisor(vmWare是一种具体的实现))对物理机的所有资源进行统计,在需要进行新的虚拟机安装时由Hypervisor进行指定资源的分配,同时也对各个虚拟主机进行管理 -
资源隔离
很容易扩展
缺点
- VM需要安装操作系统
当我们安装一个很小的应用时,需要单独部署,如果部署在虚拟机上时就需要先安装一个操作系统,只有安装了操作系统之后才能进行应用的部署。这时又造成了资源的浪费
3. 容器化时代
可以形象的将容器化看做是一个不用安装操作系统的虚拟化,当然这么说并不是很准确但是很容易做理解,就如上图所示。
在右侧的虚拟机要运行时都需要安装对应的客户操作系统(Guest Os)。而左侧的容器化技术就不需要,它是直接构建在主操作系统上的。因为我们在Docker上构建的容器内部是不用安装操作系统的,我们应用只需要在容器内安装就行了,在底层依赖Docker的沙箱机制来依赖主操作继续进行运行。所以相对虚拟机来说,容器化技术能节省空间,能快速部署
优点
-
标准化的迁移方式
开发环境打包给运维,运维展开后就能得到相同的环境 -
统一的参数配置
于运行程序相关的参数,在打包的时候就能进行设置 -
自动化部署
进行镜像还原的过程是自动化部署的,不需要人工参与 -
应用集群监控
都提供了应用监控功能,实时了解集群的运行状况 -
开发与运维之间的沟通桥梁
因为标准化的环境部署方式,可以减少不必要的环境不一致导致的问题