Something about Docker
1.2 容器技术概述
以前如果要部署一个APP
物理服务器 + 操作系统(window or linux)+ App
问题:
- 物理服务器部署非常慢:买服务器 + 部署到机房 + 安装操作系统 + 安装App(可能需要很多环境的依赖)
- 成本高:服务器很贵 哪怕app所需资源很少
- 资源浪费
- 难于迁移和扩展:
- 迁移:如果想要迁移App需要额外再准备一台新的服务器 再把以上流程再走一遍 扩展:用户增长快,无法做扩展,买一个更好的服务器在迁移 就很复杂
- 被限定的硬件厂商限定:物理硬件以前不一定是x86 还有其他的平台系统,如果选定了一个硬件厂商 以后app只能在这上运行 如果以后想换x86就非常复杂
虚拟化技术的出现
Hypervisor
- 做资源的调度和分配
- 一个物理机可以部署多个App
- 每个App独立运行在一个VM里面
优点
虚拟机的局限性
- 每一个虚拟机都是一个完整的操作系统,要给其分配资源,当虚拟机数量增多的时候,操作系统本身消耗的资源势必增多,这也是容器技术产生的原因之一
容器【container】技术解决的问题
提供了一种App的打包,按照这种标准去打包App,被打包好的容器不管在哪里都可以运行。
什么是容器
- 对软件和其依赖的标准打包
- 应用之间相互隔离
- 共享一个OS kernel,在一台机器上,这个机器可以是一台物理机上的操作系统 也可以是一个虚拟机
- 可以运行在很多主流操作系统上
容器和虚拟机的区别
主要在于每个虚拟机都相当于一个完整的“电脑” 每个虚拟机都要新装一个操作系统,虚拟机之间的隔离是物理资源层面的隔离。每一个容器却是在同一个操作系统下的不同的App,他们之间的隔离是App层面的隔离。