什么是容器
虚拟机 vs 容器
- 传统虚拟机技术通过Hypervisor层抽象底层基础设施资源,提供相互隔离的虚拟机,在其上运行一个完整的操作系统,在该系统上再运行所需的应用进程
- 容器是通过Linux内核技术对进程的资源,运行环境进行相对的限制和隔离,容器没有自己的内核,没有完整的操作系统,也没有对硬件虚拟化,所以更轻量化
- 虚拟机是为提供系统环境而生,容器则是为提供应用环境
性能对比
特性 | 虚拟机 | 容器 |
---|---|---|
操作系统 | 非常广泛 | Linux 为主 |
隔离策略 | Hypervisor | Namespace |
启动时间 | 分钟级 | 秒级 |
资源损耗 | 5-15% | 0-5% |
镜像存储 | GB-TB | KB-MB |
集群规模 | 数百 | 近万 |
思考:上面是现象结果,本质原因是什么?
技术本质
- 虚拟机的实现方式是对底层设备的抽象虚拟,实现方式是 Hypervisor,本质实际上是 CPU 等硬件的 VT 技术,使用 VMware/VirtualBox 一定要在 BIOS 里开启 VT 设置,GPU 目前虚拟化支持的不太好,公有云或 Kubernetes 的 GPU 都是独占的,即资源配置只能设置为个位数,不能有小数
- 容器的实现方式是通过内核技术进行形式上的模拟,本质上容器还是一个进程,技术支撑是 Cgroup/Namespace/Capability,主要从资源限制,环境隔离,权限管理三个维度进行模拟
为什么要用容器
- 更高效的利用系统资源 --- 性能损耗少,调度颗粒细
- 更快速的启动时间 --- 进程形式,秒级启动
- 一致的运行环境 --- 镜像
- 持续交付和部署
- 更轻松的迁移 --- 云原生目标,开箱即用,比IaaS更轻松
- 更轻松的维护和扩展
总结:任何 IT 技术兴起都可从三个维度来分析:提高稳定性,提升效率,节省资源成本,基于云原生来说就是编排
网友评论