每一次技术革新,每一个新技术的出现,都是为了解决先前遇到的问题和不足,为了解决一些痛点问题。同样,容器技术的诞生,也有着类似的情况。
容器技术,已经出现了许多年了,我们不去追究具体的历史,但是必须要了解其解决的痛点问题,以及它的优势所在。
首先,我们来了解几个应用部署的方式:传统的部署方式,虚拟机虚拟化部署方式,容器化部署方式,下面我们来进一步了解各部署方式的特点。
第一、 传统部署方式
传统部署方式就是“农耕时代”。
效率低下、部署慢:需要采购硬件物理服务器,然后上架,安装系统,部署环境等等,周期长,耗时;
成本高、资源浪费:硬件服务器动辄几万,加上各种路由交换设备,成本很高;
扩展迁移不方便,灵活性差:应用部署在物理机OS之上,环境部署好后,环境和OS耦合度高,复用性差,造成资源浪费,迁移时需要重新安装系统,部署环境,即使借助克隆软件,整机克隆,也很不方便,不够灵活;
可能会被限制硬件厂商:某些系统和软件、尤其时存储软件和硬件厂商绑定,迁移扩展不方便。
第二、 虚拟机虚拟化部署方式
虚拟机虚拟化是“半自动化”时代。
技术实现:一般是通过hypervisor层来实现硬件的虚拟化。
优势:
资源池概念:一个物理机的资源分配到了不同的虚拟机;
容易扩展:物理机资源充足时,很容易扩展虚拟机;
容易云化:比如私有云,AWS、阿里云等公有云的实现。
局限性:
每一个虚拟机guest OS都是一个完整的操作系统,当虚拟机数量增多时,操作系统本身消耗的资源势必增多,因此,vm 虚拟化“太重”,容易造成资源浪费,灵活性还不够好,因为都是os级别的操作。
第三、 容器虚拟化部署方式
容器技术是真正的“自动化”时代。
什么是容器
容器可以形象地理解为是一种集装箱技术,是一种 封装标准,可以将app打包,进行统一的封装。
因此,
1)容器是对软件和其依赖的标准化打包;
2)容器实现了应用之间的相互隔离;
3)不同容器之间共享同一个OS kernel;
4)可以运行在很多主流的操作系统之上。
容器可以解决的问题
1)解决了开发和运维之间的矛盾;
2)在DEV和OPS之间搭建了一座桥梁,是实现devops的最佳解决方案。
附 虚拟机和容器虚拟化混合使用场景示例图: