容器概念简述:
容器是一种内核虚拟化技术,可以提供轻量级的虚拟化,以便隔离进程和资源。以容器技术为基础,开放诸如CPU、内存这些基本资源 而不是虚拟机。是对传统数据中心资源分配粒度的变革。
IT资源分配发展趋势:
IT资源分配发展 经历了从裸机时代到虚拟机时代到如今的容器时代。
容器与虚拟机
容器并不包含一个单独的操作系统,而是基于已有的基础设施中操作系统提供的功能来运行的。
将应用程序及所有程序的依赖环境打包到一个容器中,容器可以运行在任何一种Linux服务器上。这大大地提高了程序运行的灵活性和可移植性。
虚拟机是操作系统级别的资源隔离,容器本质上是进程级的资源隔离。
容器技术的特点
容器特点 | 相关细节 |
容器占用资源少,镜像小,性能高: 1)可大规模快速启停 2) 资源利用率高 | 更细的资源分配粒度 资源利用率高更高 性能(接近裸机性能) 无GuestOS 更小的镜像包,更快的启动度(ms级) |
APP整体打包,与OS解耦,一次打包,到处运行: 1)便于跨云迁移 2) 打通DevOps流程,提升开发/测试/部署/运维效率 | 分层镜像 镜像格式标准化 镜像平台无关性 标准化APP/开发/测试/部署流程 |
基于Docker Hub简化应用商店构建,便于镜像共享 | Docker Hub已经有超过好几万个应用映像 |
方便OS快速部署、在线升级 | 针对Docker的精简OS,如CoreOS,Atomic |
容器技术的应用场景
适用场景
- 分布式应用
- 高性能应用
- 混合云解决方案:应用自由跨云迁移
不适用场景
- 资源隔离要求高的场景: 公有云多租户容器需要over VM
- 修改内核的应用:OS内核有修改,或有依赖的应用;需把内核态模块修改为用户态,或者采用独立集群
容器编排调度方案
产品 | 背景 | 技术成熟度 | 社区 |
Kubernetes (k8s) | Google主导的分布式容器的资源调度和业务编排系统。 Docker出现后,2014年Google开源了 Kubernetes | 2018 年 12 月 4 日,Kubernetes v1.13 发布。2015/6 发布商用的 1.0版本 | 参与公司:Google/IBM/HP/MS/vmware等 主要贡献者:Google/Redhat/CoreOS |
Mesos+ Marathon | 2009年,加州大学伯克利分校的AMPLab开发的开源群集管理软件,支持Hadoop、Spark、Storm 和Kafka等16种架构。 | Mesos v0.20.0+ 开始,可以支持对 Docker 的部署,运行和伸缩。Marathon 已达到 v1.5.3 | 不活跃。主要贡献者来自 Mesosphere,其他贡献者来自 Twitter 和独立贡献者 |
Docker compose/swarm | Docker主导,创建自己的生态 | 2018/4 v1.2.9发布 | 主要贡献者就是docker,社区活跃,docker控制 |
Rancher | 2008年创建cloud.com,被citrix收购,然后2014年创建rancher。为私有云提供容器服务 | 2018/4 v2.0发布 | RancherLabs是主要贡献者,社区活跃一般 |