1.为何会出现容器技术?java
容器是针对如下问题的解决方案:在切换运行环境后,如何保证软件可以可靠地运行?这种切换多是从程序员的笔记本电脑到测试环境、从某个测试阶段部署到线上,也多是从数据中心的某台物理机到私有云或者公有云上的某台虚拟机。程序员
2.容器是什么?web
容器就是组件和底层服务细节之间的接口。在web组件、企业级Bean等可以执行以前,它必须被装配为一个JavaEE模块,并部署在容器上。根据组件构成,将JavaEE项目开发中的容器分为如下几类,(由上到下):Applet容器、(ApplicationClient)应用客户端容器、Web容器、EJB容器。javaee核心概念就是组件+容器,随着愈来愈多的J2ee框架出现,相应的每种框架都通常有与之对应的容器。服务器
3.容器技术的将来发展趋势?框架
截至今天,业界有一个重要的趋势,即从VM迁移到容器以部署软件应用程序。其主要缘由是与VM相比,容器提供的灵活性和低成本。谷歌多年来一直使用容器技术与Borg和Omega容器集群管理平台大规模运行Google应用程序。更重要的是,Google经过实施cgroup和参与libcontainer项目为容器空间作出了贡献。在过去几年中,Google可能已经在使用容器的性能,资源利用率和总体效率方面得到了巨大的收益。最近,微软没有在Windows平台上进行操做系统级虚拟化,当即采起措施在Windows Server上实现对容器的本机支持。微服务
在生产环境中,Docker、Rocket和其余容器平台不能在单个主机上运行,缘由是它们暴露于单个故障点。当一个容器集合在单个主机上运行时,若是主机失败,在该主机上运行的全部容器也将失败。为了不这种状况,须要使用容器主机集群。解决这个问题的第一个最开放源码的容器集群管理平台之一是Apache Mesos。它最初是做为一个研究项目在加州大学伯克利分校开发的,后来在2012年左右转移到了阿帕奇(Apache)。Google采起了相似的步骤来实现一个先进的、开放源码的容器集群管理系统,名为Kubernetes。Docker还启动了一个名为Docker Swarm的解决方案。今天,这些解决方案还处于很是早期的阶段,可能须要几个月才能完成所有功能集,并在生产环境中普遍应用。post
微型服务是另外一项突破性的技术,而不是一种使用容器进行部署的软件体系结构。微服务是一个Web服务的轻量级实现,与标准Web服务相比,它的启动速度很是快。这是经过在一个服务中打包一个功能单元并将其嵌入到一个轻量级的Web服务器二进制文件中来实现的。性能
经过考虑上述事实,咱们能够预测,在将来几年内,容器可能会占用虚拟机,有时可能会彻底取代它们。去年,我与一些企业合做,在POC层面实施基于容器的解决方案。不多有人想接受挑战并将其投入生产。随着容器集群管理系统变得更加成熟,这可能会很快发生变化。测试