1、很早以前,部署/发布应用程序的方式
一台物理机,安装操作系统,然后安装应用程序
缺点:
部署非常慢
成本非常高
资源浪费
难于迁移和扩展
可能会被限定硬件厂商
2、虚拟化技术
为了解决上面的问题,出现了虚拟化技术
特点:
一个物理机可以部署多个app
每个app独立运行在一个VM里
虚拟化的优点
资源池: 一个物理机的资源分配到不同的虚拟机里
很容易扩展: 加物理机器或者加虚拟机
很容易云化: 亚马逊AWS,阿里云等
虚拟化的局限性
每个虚拟机都是一个完整的操作系统,要给其分配资源,当虚拟机数量增多时,操作系统本身消耗的资源势必增多
3、容器技术
1) 为什么容器技术会出现?
开发人员用到多种不同的技术,不同的数据库,缓存,消息中间件等
运维人员对App的部署,环境的安装,对App的监控等。
开发人员和运维人员使用的环境不一样,可能导致各种问题。
2) 容器解决了什么问题? 解决了开发和运维之间的矛盾
容器翻译过来是集装箱,我们按照集装箱的标准将东西放入集装箱,可以通过汽车运输,也可以通过轮船运输。
容器技术提供了对App的打包,容器可以运行在任何的环境中。这样开发和运维就可以通过标准的方式进行沟通。
总结: 容器解决了什么问题?
1) 解决了开发和运维之间的矛盾
2) 在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案。
4、什么是容器?
对软件和其依赖的标准化打包
应用之间相互隔离
共享同一个OS Kernel
可以运行在很多主流操作系统上
5、容器和虚拟机的区别
容器是APP层面的隔离
虚拟化是物理资源层面的隔离
6、虚拟化技术+容器一起使用
在虚拟机里使用容器,如上图,有三个虚拟机,左边两个使用容器Docker。
7、Docker产生的历史
2008年(容器技术在2004年和2008年已经作为Linux的一部分)
2013年 Docker由dotCloud公司创建的一个内部项目(利用底层LXC,做了一层包装)
2013年3月 Docker开源
2016年2月 第一个商业版本,现在叫企业版