1979年,Unix v7系统支持chroot,为应用构建一个独立的虚拟文件系统视图。
1999年,FreeBSD 4.0支持jail,第一个商用化的OS虚拟化技术。
2004年,Solaris 10支持Solaris Zone,第二个商用化的OS虚拟化技术。
2005年,OpenVZ发布,非常重要的Linux OS虚拟化技术先行者。
2004年 ~ 2007年,Google 内部大规模使用 Cgroups 等的OS虚拟化技术。
2006年,Google开源内部使用的process container技术,后续更名为cgroup。
2008年,Cgroups 进入了 Linux 内核主线。
2008年,LXC(Linux Container)项目具备了Linux容器的雏型。
2011年,CloudFoundry开发Warden系统,一个完整的容器管理系统雏型。
2013年,Google通过Let Me Contain That For You(LMCTFY)开源内部容器系统。
2013年,Docker项目正式发布,让Linux容器技术逐步席卷天下。
2014年,Kubernetes项目正式发布,容器技术开始和编排系统起头并进。
注释:Kubernetes是Google开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。在生产环境中部署一个应用程序时,通常要部署该应用的多个实例以便对应用请求进行负载均衡。
2015年,由Google,Redhat、Microsoft及一些大型云厂商共同创立了CNCF,云原生浪潮启动。
2016年-2017年,容器生态开始模块化、规范化。CNCF接受Containerd、rkt项目,OCI发布1.0,CRI/CNI得到广泛支持。
2017年-2018年,容器服务商业化。AWS ECS,Google EKS,Alibaba ACK/ASK/ECI,华为CCI,Oracle Container Engine for Kubernetes;VMware,Redhat和Rancher开始提供基于Kubernetes的商业服务产品。
2017年-2019年,容器引擎技术飞速发展,新技术不断涌现。2017年底Kata Containers社区成立,2018年5月Google开源gVisor代码,2018年11月AWS开源firecracker,某公司发布安全沙箱1.0。
2020年-202x年,容器引擎技术升级,Kata Containers开始2.0架构,某公司发布沙箱容器2.0....
三.容器的架构
轻量级:
容器通常位于物理服务器及其主机操作系统之上。它可以通过单个操作系统安装来运行多个工作环境。因此容器特别 “轻” —— 它们只有几兆字节,只需几秒钟即可启动
可移植性:
目前容器技术的现代形式主要体现在应用程序容器化(如 Docker)和系统容器化(如 LXC)中。这两种形式的容器都能让 IT 团队从底层架构中抽象出程序代码,从而实现跨各种部署环境的可移植性。
降低成本:
内存,CPU 和存储效率的提高是容器技术的关键优势。由于可以在同一基础架构上支持更多容器,那么这些资源的减少就可以转化为巨大的成本节省,同时还可以减少管理开销。
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
四.工作视角
1.容器和容器之间只是进程级别的隔离,而虚拟机是完全的资源隔离
2.容器的启动是秒级甚至可以更短
3.容器使用宿主机操作系统内核,虚拟机使用完全独立的自己的内核
4.容器的局限性是目前需要运行在64位操作系统上,而虚拟机还可以运行在其他位数的操作系统上
五.容器云厂商