容器是什么?

专业地讲,容器是实现操作系统虚拟化的一种途径,可以让用户在资源受到隔离的进程中运行应用程序及其依赖关系;简单地讲,容器就是基于linux内核技术的一种隔离手段。

很多人认为容器就是另外一种虚拟机(VM)。实际上,虚拟机通过Guest OS来运行对应的应用的,而容器通过使用Docker Engine使用系统原生隔离技术进行隔离。

虚拟化和容器的对比

为啥这样做?有什么好处呢?这就从PaaS的出现开始说起了。

PaaS(Platform-as-a-Service,平台即服务)把服务器平台作为一种提供服务的商业模式。之前的PaaS平台是使用VM的方式去部署平台应用服务的,但是由于VM启动的特点,部署一个应用时间十分长。前期,这样的部署还可以适应企业的需要,但随着互联网发展,企业越来越需要适应迅速多变的业务场景,部署在主机上的的环境不可控制及启动时间问题成为了PaaS平台发展的阻力;后期,微服务架构及持续集成部署CI/CD大行其道,PaaS部署应用必须要有新的解决方案。

于是,容器随之而生——

2000年,容器技术概念最先出现,时称“FreeBSD jail”,其诞生是为了让进程在经过修改的chroot环境中创建,而不会脱离和影响整个系统,在环境中,对文件系统、网络和用户的访问都实现了虚拟化。

2001年,隔离环境实施进入了Linux领域。在完成多个受控制用户空间的基础性工作后,Linux容器开始逐渐成形并最终发展成了现在的模样。

2007年,Google的控制组(CGroups)成功研发。这是一种可以限制、记录、隔离进程组(process groups)所使用的物理资源的机制,并贡献加入到linux内核。

2008年,LXC(LinuX Containers)出现,是第一个完善的Linux容器管理器的实现方案。

2013年,Docker横空出世。一开始Docker创建的目的是为了更容易使用LXC,但后来这个作用被其他技术替代,而Docker反而成为了容器使用的标准,其它的容器技术如LXC、Rocket、Pouch等市场占有率已不足Docker的一半。

容器为PaaS平台带来了以下特点:

环境一致性。通过容器及其独特文件系统,使得应用程序在开发、测试、生产环节中高度一致,实现跨多环境无差别移动。

解放开发人员生产力。使用容器主要的目的是采用微服务架构改变应用,开发人员把主要精力集中在当前业务服务的开发,不必再担心语言依赖库问题。

运营高效。由于容器基于原生linux内核的虚拟隔离技术,容器运行与原生进程消耗资源基本一致。容器可以让用户在一个系统中轻松运行多个容器镜像,这与在一个系统中运行多个进程一样。用户还可以创建容器映像,将其作为其他映像的基础,使用洋葱文件系统,使大应用迁移部署达到秒级。

版本控制。运营团队可以创建基本映像,将操作系统、配置和所需的各种工具实用程序囊括在其中。开发团队可以在基础镜像的基础上构建其不同版本的服务镜像,这样有利于从开发测试到生产使用统一配置环境。

在微服务的发展中,使用容器的目的就是用来管理微服务架构。于是新的重点问题衍生了:包装服务的容器如何编排调度?技术社区逐渐把关注点转移到“容器编排”上。用IaaS类比容器编排的概念,就类似于IaaS的Hypervisor的角色,只是位置是在OS(或guest OS)之上,主要功能是管理调度容器在多个OS上运行,关注点在于微服务的治理。

目前出现的容器编排引擎有Swarm、Mesos、Cattle、Kubernetes等,以Kubernetes为主流。Kubernetes把微服务应用以容器为粒度,按照一定的约束,自动编排分配到底层计算资源上,实现不同场景下的计算资源充分利用。

随着微服务的发展,基于容器及容器编排技术优势特点,利用容器技术实现新一代PaaS平台成为可能,未来其主要往以下几个方向推进:

减低复杂性。目前的Kubernetes容器平台有些复杂,用户首次使用需要花较大的学习成本,很多功能用户甚至无法知道如何使用,应该朝简单化方向发展。

混合云和多云。由于采用了容器,企业可以把应用从内部测试环境放到跨多个平台运行。这种混合使用场景未来会增多,如何更安全快速调度容器服务成为容器技术研究的重点。

持续集成及部署应用。使用容器技术及微服务架构,目的是基于敏捷实现持续集成及部署,像流水线一样生产服务应用。未来如何把这套理念根据不同需求简单落地,成为必须解决的问题。

云宏新一代WinGarden容器云平台为管理多kubernetes的企业级容器管理平台,是专门针对企业级客户设计的安全、稳定、易管理和运维的轻量级容器云平台,为企业提供真正的云原生应用管理架构,帮助企业建立弹性、可伸缩、快速迭代和灵活敏捷的应用架构。

云宏WinGarden容器云平台结合了云宏IaaS平台的技术优势,并针对私有云领域的PaaS平台作了多方面的创新在银行、航空等多个行业均有成功部署的案例。未来,云宏将继续深入打造容器云平台,打造更有价值的容器云产品。