以往的部署方式
- 部署非常慢
- 成本非常高
- 资源浪费
- 难于迁移和扩展
- 可能会被限定的硬件厂商限制
虚拟化技术出现以后
- 每个app独立运行在一个VM里
- 资源池:一个物理机的资源分配到了不同的虚拟机里
- 很容易扩展:加物理机/虚拟机
- 很容易云化:亚马逊AWS,阿里云等
虚拟化的局限性
每一个虚拟机都是一个完整的操作系统,要给其分配资源,当虚拟机数量增多时,操作系统本上消耗的资源势必增多
什么是容器?
- 对软件和其依赖的标准化打包
- 应用之间相互隔离
- 共享同一个OS Kernel
- 可以运行在很多主流操作系统上
容器解决了什么问题?
- 解决了开发和运维之间的矛盾
- 在开发和运维之间搭建了一个桥梁,是实现devops的最佳解决方案
容器和虚拟机的区别
虚拟化+容器
Dokcer - 容器技术的一种实现
Docker Architecture
什么是Image
- 文件和meta data的集合(root filesystem)
- 分层的,并且没一层都可以添加改变删除文件,成为一个新image
- 不同的image可以共享相同的layer
- image本身的read-only的
什么是container
- 通过Image创建
- 在Image layer之上建立一个container layer(可读写)
- 类比面向对象:类和实例
- Image负责app的存储和分发,Container负责运行app