容器技术及其应用

一、容器技术及其应用

1. 内容摘要

近年来,容器技术及相关应用得到了国内外越来越多的关注度,研发和应用推广发展势头迅猛。在国外,容器技术已经形成了较成熟的生态圈;在国内,金融企业、互联网企业、IT企业积极投入容器技术研发和应用推广,发展势头迅猛。其主要内容包括:

1.1针对容器技术现状进行研究和分析

一是梳理了容器技术从开始到现在的发展历程,对现有容器发展的生态结构进行分析,其中包括开源社区、产业联盟、解决方案厂商等;

二是对容器技术框架进行了详细的描述,对技术框架各层涉及的技术点进行了介绍;

三是结合已发布的国家和国际标准,将现有容器技术对于参考架构的实现情况进行分析;

四是分析了容器技术与大数据、物联网、SDN之间的关系。

1.2 容器技术发展路线及技术架构

通过列举容器技术典型4个应用场景,包括PaaS平台建设、软件定义数据中心、容器即服务、持续集成和发布等,分析了容器技术在各种场景下的关键成功因素。

1.3 容器未来发展趋势

结合容器发展现状和应用场景应用情况,分析了容器技术在应用过程中面临的问题,同时提出了容器今后发展的生态图,对未来容器技术发展进行了展望。

2. 容器技术对云计算领域的深远影响

继虚拟化技术出现后,容器技术逐渐成为对云计算领域具有深远影响的变革技术。容器技术的发展和应用,将为各行业应用云计算提供了新思路,同时容器技术也将对云计算的交付方式、效率、PaaS平台的构建等方面产生深远的影响,具体体现在以下几个方面:

2.1 简化部署

容器技术可以将应用打包成单一地址访问的、Registry存储的、仅通过一行命令就可以部署完成的组件。不论将服务部署在哪里,容器都可以从根本上简化服务部署工作。

2.2 快速启动

容器技术对操作系统的资源进行再次抽象,而并非对整个物理机资源进虚拟化,通过这种方式,打包好的服务可以快速启动。

2.3 服务组合

采用容器的方式进行部署,整个系统会变得易于组合,通过容器技术将不同服务封装在对应的容器中,之后结合一些脚本使这些容器按照要求相互协作,这样操作不仅可以简化部署难度还可以降低操作风险。

2.4 易于迁移

容器技术最重要的价值就是为在不同主机上运行服务提供一个轻便的、一致的格式。容器格式的标准化加快交付体验,允许用户方便地对工作负载进行迁移,避免局限于单一的平台提供商。

为更好地推进容器及相关技术在中国的落地与实践,推动容器技术在国内的落地,并建立顺应国际技术发展趋势、符合中国本地化

2.5 相关术语

术语

定义/解释

镜像

 系统文件及其应用文件以特殊的文件形式进行备份制作成单一的文件。

微服务架构

 微服务架构是一种特定的软件应用程序设计方式——将大型软件拆分为多个独立可部署服务组合而成的套件方案。

开发运维一体化

可定义为是一种过程、方法、文化、运动或实践,主要是为了通过一条高度自动化的流水线来加强开发和其他IT职能部门之间的沟通和协作,加速软件和服务的交付。

运行时引擎

指用户用来运行容器镜像的软件系统

表2.5 术语

2.6 缩略语

 

 

表2.6 缩略语

3. 容器技术现状

容器技术发展演进路径

 

 

图3.1 容器技术演变路径

容器技术最早可以追溯到1979年UNIX系统中的chroot,最初是为了方便切换root目录,为每个进程提供了文件系统资源的隔离,这也是OS虚拟化思想的起源。

2000年,BSD吸收并改进了chroot技术,发布了FreeBSD Jails。FreeBSD Jails除文件系统隔离,还添加了用户和网络资源等的隔离,每个Jail还能分配一个独立IP,进行一些相对独立的软件安装和配置。

2001年,Linux发布了Linux Vserver,Linux VServer依旧是延续了Jails的思想,在一个操作系统上隔离文件系统、CPU时间、网络地址和内存等资源,每一个分区都被称为一个 security context,内部的虚拟化系统被称为VPS。

2004年原SUN公司发布了Solaris Containers,Solaris Containers作为Solaris 10中的特性发布的,包含了系统资源控制和zones提供的二进制隔离,Zones 作为在操作系统实例内一个完全隔离的虚拟服务器存在。

2005 年SWsoft公司发布了OpenVZ,OpenVZ和Solaris Containers非常类似,通过打了补丁的 Linux 内核来提供虚拟化、隔离、资源管理和检查点。OpenVZ 标志着内核级别的虚拟化真正成为主流,之后不断有相关的技术被加入内核。

2006 年Google 发布了 Process Containers,Process Container 记录和隔离每个进程的资源使用(包括CPU、内存、硬盘I/O、网络等),后改名为cgroups(Control Groups),并在2007年被加入Linux内核2.6.24版本中。CGroup是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的物理资源(如:cpu,memory,IO等等)的机制。

2008年出现了第一个比较完善的LXC容器技术,基于已经被加入内核的cgroups和Linux namespaces 实现。不需要打补丁,LXC就能运行在任意vanila内核的Linux上。

2011年,CloudFoundry发布了Warden,和LXC不同,Warden可以工作在任何操作系统上,作为守护进程运行,还提供了管理容器的API。

2013年Google公司建立了开源的容器技术栈lmctfy,Google开启这个项目是为了通过容器实现高性能,高资源利用率,同时接近零开销的虚拟化技术。目前 Kubernetes 中的监控工具 cAdvisor就起源于lmctfy项目,2015年Google将lmctfy的核心技术贡献给了 libcontainer。

2013年Docker诞生,Docker最早是dotCloud(Docker公司的前身,是一家PaaS公司)内部的项目,和Warden类似,Docker最初也用了LXC,后来才自己写了 libcontainer 替换了 LXC。和其它容器技术不同的是,Docker 围绕容器构建了一套完整的生态,包括容器镜像标准、容器Registry、REST API、CLI、容器集群管理工具Docker Swarm等;

2014年CoreOS创建了rkt,为了改进Docker在安全方面的缺陷,重写的一个容器引擎,相关容器工具产品包括:服务发现工具etcd和网络工具flannel等。

2016年微软公司发布基于Windows 的容器技术Hyper-V Container,Hyper-V Container原理和Linux下的容器技术类似,可以保证在某个容器里运行的进程与外界是隔离的,兼顾虚拟机的安全性和容器的轻量级。

Docker for Windows 是在 Windows 上运行一个 Linux 虚拟机,里面跑 Linux Docker。

而 Docker on Windows 是将 Docker 引擎移植到 Windows,提供 Docker API, 直接在 Windows 系统上通过移植后的 Docker Engine,来运行Windows容器,在里面跑的是 Windows 程序,运行于 Windows 内核(而不是Linux程序运行于Linux内核)。由于使用 Docker API,可以支持 Compose, Swarm 等。

4. 容器技术发展生态

随着容器技术的演进,越来越多的机构开始重视并参与到容器技术的探索中来。从最初的以Unix或Linux项目到开源社区,到各种类型的容器技术创业公司、IT 企业及产业联盟,容器技术的发展生态也在逐渐得到发展与丰富。在开源社区方面,附录A中列出了国际上的OCI和CNCF(Cloud Native Computing Foundation,简称CNCF,下同),容器的开源项目也在附录B中列出;在国内的IT 企业和创业公司方面,还提供了多个行业应用案例,这些行业应用案例在附录 D 中列出;产业联盟方面包括国际包括 CNCF,国内包括中国开源云联盟(COSCL)。容器的开源社区、创业公司、IT 企业、产业联盟共同构成容器技术发展的生态圈。

5. 容器技术框架

通过研究、梳理和分析现有的容器技术,形成容器相关技术的技术架构,如图2.2所示。

图2.2 容器技术框架

 

 

5.1 服务器层

当运行容器镜像时,容器本身需要运行在传统操作系统之上,而这个操作系统既可以是基于物理机,也可以是基于 VM。服务器层包含了这两种场景,泛指了容器运行的环境,同时容器并不关心服务器层如何提供和管理,它的期望只是能获得这些服务器资源。

5.2 资源管理层

资源管理包含了服务器、操作系统等资源的管理。其中如果是物理服务器的话,需要涉及物理机管理系统(例如Rocks等);如果是虚拟机的话,需要使用虚拟化平台。此外,无论是物理服务器还是虚拟机,都需要对其中的操作系统加以管理(例如:Chef、Puppet、Ansible和SaltStack等)。而传统的存储和网络管理也包含在资源管理层。由于存储,网络两者选择众多,不一而足,因此不再列举。

总而言之,资源管理层的核心目标是对服务器和操作系统资源进行管理,以支持上层的容器运行引擎。

5.3 运行引擎层

容器运行引擎层主要指常见的容器系统,包括 Docker、rkt、Hyper、CRI-O。这些容器系统的共通作用包括启动容器镜像、运行容器应用和管理容器实例。运行引擎又可以分为管理程序和运行时环境两个模块。 需要注意的是,运行引擎是单机程序,类似虚拟化软件的KVM和Xen,不是集群分布式系统。引擎运行于服务器操作系统之上,接受上层集群系统的管理。 

 相关开源项目包括: 

  ——资源隔离:Cgroup、Hypervisor; 

  ——访问限制:Namespace、Hypervisor; 

  ——管理程序:Docker Engine、OCID、hyperd,RKT、CRI-O; 

  ——运行时环境:runC(Docker)、runV(Hyper)、runZ (Solaris)

5.4 集群管理层

可以把容器的集群管理系统类和针对 VM 的集群管理系统划等号,都是通过对一组服务器运行分布式应用。而这两者的细微区别在于,VM 的集群管理系统需要运行在物理服务器上,而容器集群管理系统既可以运行在物理服务器上,也可以运行在 VM 上。 常见的容器集群管理系统包括:Kubernetes、Docker Swarm、Mesos。这三者各有特色,但随着时间推移,三者的融合将越发明显。Kubernetes 在这三者中比较特殊,它的地位更接近OpenStack。围绕这 Kubernetes,CNCF 基金会已经建立了一个非常强大的生态体系,这是Docker Swarm和Mesos都不具备的。而CNCF基金会本身也正向着容器界的OpenStack基金会发展,值得大家重点关注。 

集群管理层涉及到的相关开源软件项目包括: 

  ——指挥调度:Docker Swarm、Kubernetes、Mesos等 

  ——服务发现:Etcd、Consul、Zookeeper,DNS 

  ——监控:Prometheous 

  ——存储:Flocker 

  ——网络:Calico、Weave、Flannel

5.5 应用层

泛指所有运行于容器之上的应用程序,以及所需的辅助系统,包括:监控、日志、安全、编排、镜像仓库等等。 

  ——监控模块,相关开源项目包括:Prometheous、cAdvisor、Sysdig等; 

  ——日志,相关开源项目包括:Fluented、LogStash等; 

  ——安全,包括容器镜像的安全扫描,运行环境的安全隔离,集群环境的安全管理等功能; 

  ——编排,相关开源项目包括:Docker Compose、CoreOS Fleet等; 

  ——CI/CD,相关开源项目包括:Jenkins、Buildbot、Gitlab CI、Drone.io; 

  ——镜像仓库:Docker Hub、VMware Harbor、Huawei Dockyard。

6. 容器技术对参考架构的实现情况

国家标准GB/T 32399-2015《信息技术 云计算 参考架构》(简称CCRA,修改采用ISO/IEC 17789)是2015年发布的国家标准,描述了云计算的利益相关者,云计算系统的基本特征,云计算的基本活动和功能组件,我国是该国际标准的立项推动国之一,积极参与了该国际标准的编制,该标准的诞生标志着国际三大标准化组织ISO、IEC和ITU首次在云计算领域统一认识并达成一致,是国际国内云计算领域的最重要的基础性标准。在该标准中描述了云计算的功能架构,功能架构包含了支撑云计算活动所需的功能,如图6图中标蓝色的部分是现有容器技术已经实现的内容。

 

 

图6 CCRA功能组件图

7. 容器技术的关键技术内容

7.1 镜像

容器的镜像通常包括操作系统文件、应用本身的文件、应用所依赖的软件包和库文件。为了提高容器镜像的管理效率,容器的镜像采用分层的形式存放。容器的镜像最底层通常是Linux的rootfs和系统文件,再往上则是各种软件包层。这些文件层在叠加后成为完整的只读文件系统,最终挂载到容器里面。在运行过程中,容器应用往往需要写入文件数据,容器引擎为此需再创建一个可写层,加在镜像的只读文件系统上面。使用分层的容器镜像之后,镜像的下载和传输更加便利,因为只需要在宿主机上把缺少的镜像文件层次下载即可,无需整个镜像传送。

在Linux中,联合文件系统UnionFS能够把多个文件层叠加在一起,并透明地展现成一个完整的文件系统。常见的联合文件系统有AUFS(AnotherUnion File  System),btrfs,OverlayFS和DeviceMapper等。

7.2 运行时引擎

容器运行时引擎和容器镜像两者的关系类似于虚拟化软件和虚拟机镜像的关系。容器运行时引擎的技术标准主要是由OCI基金会领导社区进行制定。目前OCI已经发布了容器运行时引擎的技术规范,并认可了runC(Docker公司提供)和runV(Hyper公司提供)两种合规的运行引擎。

7.3 容器编排

容器编排工具通过对容器服务的编排,决定容器服务之间如何进行交互。容器编排工具一般要处理以下几方面的内容: 

1)容器的启动。选择启动的机器、镜像和启动参数等; 

2)容器的应用部署。提供方法对应用进行部署; 

3)容器应用的在线升级。提供方法可以平滑地切换到应用新版本。 

容器的编排一般是通过描述性语言YAML或者JSON来定义编排的内容。目前主要的编排工具有Docker compose和基于Google的Kubernetes helm等。

7.4 容器集群

容器集群是将多台物理机抽象为逻辑上单一调度实体的技术,为容器化的应用提供资源调度、服务发现、弹性伸缩、负载均衡等功能,同时监控和管理整个服务器集群,提供高质量、不间断的应用服务。容器集群主要包含以下技术:

资源调度:主要以集中化的方式管理和调度资源,按需为容器提供 CPU、内存等资源; 

服务发现:通过全局可访问的注册中心实现任何一个应用能够获取当前环境的细节,自动加入到当前的应用集群中;

弹性伸缩:在资源层面,监控集群资源使用情况,自动增减主机资源;在应用层面,可通过策略自动增减应用实例来实现业务能力的弹性伸缩;

负载均衡:当应用压力增加,集群自动扩展服务将负载均衡至每一个运行节点;当某个节点出现故障,应用实例重新部署运行到健康的节点上。

7.5 服务注册和发现

容器技术在构建自动化运维场景中,服务注册和发现是重要的两个环节,一般通过一个全局性的配置服务来实现。其基本原理类似公告牌信息发布系统,A 服务(容器应用或者普通应用)启动后在配置服务器(公告牌)上注册一些对外信息(比如IP和端口),B服务通过查询配置服务器(公告牌)来获取A注册的信息(IP和端口)。

7.6 热迁移

热迁移(Live Migration),又称为动态迁移或者实时迁移,是指将整容器的运行时状体完整保存下来,同时可以快速地在其他主机或平台上恢复运行。容器热迁移主要应用在两个方面:一是有多个操作单元执行任务,热迁移能迅速地复制与迁移容器,做到无感知运行作业;二是可以处理数据中心中集群的负载均衡,大量数据涌来无法运行计算时,可利用热迁移创建多个容器处理运算任务,调节信息数据处理峰谷,配置管理负载均衡比例,降低应用延迟。

8. 容器技术与相关技术的关系

8.1 容器与云计算

虚拟化是云计算的重要基础,容器定义了一套从构建到执行的标准化体系,改变了传统的虚拟化技术,深度影响了云计算领域,容器是云计算的未来。以Docker 为代表的容器技术越来越深刻地影响云计算,也改变我们的日常开发、运维和测试。相比于虚拟机,容器的轻量、快速启动和低开销,以及基于此的按业务打包和微服务模式,这些特点被用来改进 DevOps,很多场景下更适合做大规模集群管理和搭建灵活的分布式系统。通过深度整合了IaaS、PaaS 及容器技术,提供弹性计算、DevOps 工具链及微服务基础设施等服务,帮助企业解决IT、架构及运维等问题,使企业更聚焦于业务,构建了新一代的云计算生态体系。

8.2 容器与大数据

大数据平台如果能采用容器方式发布,与Spark、Hadoop、Cassandra等相关技术的集成与对接,可降低整个系统的搭建难度,缩短交付和安装周期,减少安装失败风险。容器化后,各类大数据平台组件可以轻松实现迁移的目的,也能实现多复本控制和高可用。

8.3 容器与物联网

物联网(IoT)技术发展日新月异,而容器技术刚好遇到这样的机遇,将在几个方面促进物联网的发展。

首先,运用容器技术后,可通过容器封装,可简化下载、安装部署、启动和后续应用更新。这将大大加速物联网应用开发部署。其次,容器技术还可以满足物联网在自动监控,集中式维护管理方面的需求。最后,数据采集端环境千变万化,如果需要手动适配工作量巨大,如果采用容器化技术,只要打包几类典型的容器镜像,如ARM,X86,x86_64等,就可以事半功倍实现终端的发布工作。

8.4 容器与SDN

随着容器部署规模的增大,跨主机、跨网络的容器迁移成为常态。而容器更多地关注于轻量化本身,对于网络架构并没有太多关注。过于复杂的体系结构和管理过程,容易让整个容器网络和系统陷入不可控的非稳定状态。通过SDN和Overlay网络结合,将控制转发分离、集中控制管理理念应用于容器网络,还可以最大程度增强容器网络的弹性伸缩能力和简化网络管理。

另外,SDN与容器的配合,是相得益彰、互相促进的。业界的SDN控制器和系统一般都比较庞大,安装、运行都极为复杂。通过Docker技术,能够实现SDN控制器的轻量级快速部署、安装、运行。

9. 容器应用

9.1 容器技术应用场景

9.1.1 PaaS平台建设

最早的PaaS平台方案初步解决了很多客户对于应用弹性的需求,但是在容器技术之前,构建一套PaaS平台面临着组件多、量级大、改造成本高等挑战,而且对于运行在不同 PaaS 平台上的应用,很难避免应用对平台的深度依赖。譬如,不同的PaaS平台对弹性、高可用、性能、监控、日志、版本更新等的实现方式不同,则对其上应用的架构要求也不同;另外,在编程语言和技术栈方面,也会导致应用对平台供应商的深度绑定。总之,在传统PaaS平台面前,我们在开发应用时不得不配合平台的要求。

而容器技术的出现,很好的解决了上述问题。容器是以应用为中心的虚拟化环境,与编程语言、技术栈无关,比传统PaaS灵活;对应用的支撑也比底层平台多,可以发挥微服务架构的优势。同时,容器是基于轻量级虚拟化的技术,天生具有高密度的特性,可以更加高效地使用资源。

9.1.2 软件定义数据中心

       互联网和海量数据正以前所未有的增长趋势冲击着整个数据中心行业,随着互联网、电子商务、社交网络、移动办公等互联网应用的迅速发展,传统数据中心逐渐难以满足新业务的发展需求,传统数据中心面临不匹配业务的灵活变化、能耗高、运维难、密度低、不满足云和虚拟化弹性伸缩场景,也面临着应用的快速、批量、移动部署慢等问题。 

       软件定义数据中心负责将存储、计算、网络资源依据策略进行自动化调度与统一管理、编排和监控,同时根据用户需求形成不同的服务并提供计费等功能。容器技术可充分利用底层的各项计算、存储和网络资源,灵活构建容器应用,实现具备应用轻量级的容器承载能力、应用集群的松耦合和资源动态弹性伸缩的能力、实现可视化运维和自动化管控的能力、实现平台自动化部署和升级的能力,从而解决了容器平台对基础设施资源调用的需求,容器平台将数据中心转化成为一个更加灵活高效的业务应用平台,其开放性和兼容性契合了数据中心对异构、大规模、可移植、互操作等方面的需求,容器技术为云计算的实施提供了强有力的支撑。

9.1.3 容器即服务

       传统IaaS在应用过程中面临运维方面的问题,传统IaaS服务没有从根本上加速企业内部的开发运维效率,更多的主要是体现对于IT部门的技术优化和提升一定的运维能力,运维和开发人员之间依然存在传统IT手段同样的沟通成本。容器技术三个方面的优势可以有助于解决传统IaaS面临的问题。首先,容器的本质是一种操作系统级别的虚拟化,启动一个应用容器其实就是启动一个进程,因此使得容器占用空间小、资源利用率高、本身非常轻,执行起来效率较高。这些是容器技术与传统虚拟机技术的最大差别。其次,容器技术使用镜像方式能够将应用程序和它依赖的操作系统、类库以及运行时环境整体打包,统一交付,使得运维压力大大降低。最后,容器技术与底层所使用的平台无关,容器可以在Linux平台各发行版上兼容,这意味着应用架构一旦转换为容器化并且迁移部署之后,就可以在任何云平台之间无缝迁移。

9.1.4 持续集成和发布(CI/CD)

       传统软件架构特性是单体应用,开发周期至少以月为单位进行发布和升级,代码一般使用一种语言开发,不同的组件紧耦合,经常依赖于公共的库,部署周期以月为单位,部署依赖人工操作,组件版本复杂,操作风险高,时间管理成本均居高不下。 

       将容器技术引入到开发和运维环节具有以下几个方面的优势:一是提供了交付环境一致性。从开发到运维的工作流程中,由于基础环境的不一致造成了诸多问题,但通过使用容器技术在不同的物理设备、虚拟机、云平台上运行,将镜像作为标准的交付物,应用以容器为基础提供服务,实现多套环境交付的一致性;二是提供了快速部署。工具链的标准化将DevOps所需的多种工具或软件进行容器化,在任意环境实现快速部署。三是轻量和高效。与虚拟机相比,容器仅需要封装应用及相关依赖文件,更加轻量,提高资源利用率。因此企业通过容器技术进行DevOps的实践,可较好的缩短软件发布周期,提升产品交付迭代速度,提高生产效率。

9.2 容器技术优势分析

9.2.1 从运维者维度看容器技术优势

         快速部署:

         使用容器能够利用镜像快速部署运行服务,能够实现业务的快速交付,缩短业务的上线周期,极大地方便运维人员的上线部署工作。

         弹性伸缩:

         使用容器技术,当遇到高并发、高流量的大活动,容器做到根据业务的负载进行弹性扩容,以提供更好的服务。当访问量降低后,容器平台能够自动缩容,及时释放空闲资源。

         可移植性:

         容器可以运行于Linux、Unix、Window的操作系统之上,可以利用容器将服务移植到不同的操作系统环境下运行。

         轻量:

        相比传统虚拟机,容器更加轻量,资源消耗更低,镜像体积更小。

        高可用:

        容器运行的业务通常由一组容器来提供服务,容器平台的服务发现功能可以保证容器实例的副本数量即使在某个主机宕机的情况下也能维持不变。保证服务能够正常提供服务。

        资源利用率高:

        容器较传统虚拟化有更低资源使用粒度,在一台物理机上可运行上百个容器服务,从而提高服务器硬件资源的利用率。

9.2.2 从开发者维度看容器技术优势

快速构建开发环境:

开发应用除去自身编码工作之外,还需要额外的数据库、缓存或消息队列等组件在本地进行测试,使用容器技术可以快速完成构建,省去了设备申请、采购的流程,简化了开发者组件安装工作,提高了开发效率。

提供一致性的开发环境:

采用容器镜像技术,只需要一次构建就可以实现在不同的项目成员之间快速复制出一套完全一致的开发环境,从而消除因环境异构而导致的不一致性,降低软件缺陷出现的概率。 同时,在开发环境和测试环境中使用同样的镜像,也能保证开发和测试环境的一致性,提前发现软件缺陷,减少对因环境不一致而导致的缺陷的调查成本。

方便开发环境版本管理:

通过对应用程序镜像的版本化管理,可以实现同一套应用程序的多版本共存,尤其是存在对某些组件多版本支持的情况下,通过容器技术,可以轻松支持该组件的多个版本。 对应用程序容器的版本化,在应用程序本身存在多版本的情况下,开发者还能在快速进行版本回溯,提高问题调查和缺陷修复的效率;在发布失败时,也能快速回滚。

9.2.3 容器技术与其他技术的集成

容器技术与在应用过程中需要与以下几个方面技术进行集成才能在各应用场景中进行应用。一是与IaaS管理平台集成。如果容器选择在VM中运行,就需要与VM的管理平台进行对接。在私有云场景下需要对接例如OpenStack(容器技术与OpenStack技术集成具体可参考附录C)、VMware产品;在公有云场景下,需要与公有云服务提供商,例如阿里云、百度云、AWS等公司提供的VM进行集成。二是与开发工具集成。开发工具相关技术的集成是构建持续集成、持续发布以及DevOps环境的必须条件,目前比较常用的开发工具包括Jenkins、Shippable(for Docker)等。三是与网络进行集成。不同的应用运行于容器集群时有网络的互通需求,因此容器技术在具体场景应用时需要与网络二层或三层功能模块进行集成,以达到互通。四是与存储管理模块集成。存储是应用数据存储的必备,不同的存储在性能、存储空间、易用度等方面差别较大,如果要支持更多的应用,容器平台需要内置外部存储管理插件,与存储平台进行集成。

10.未来发展趋势

10.1 容器技术问题分析

容器技术拥有快速扩展、灵活性和易用性等诸多优势,但在容器应用过程中会遇到以下几个方面的问题:一是兼容性方面,容器版本在快速更新中,以Docker 相关技术为例,每隔1-3个月左右就有版本的升级,一些核心模块依赖于高版本内核,运维时存在版本兼容问题。二是目前容器技术没有统一的标准,例如:在容器层面有Docker Container、Mesos Container、rkt、CRI-O等众多容器技术产品;此外,Google 虽然在联合容器业界相关的厂商制定标准,但目前也未在容器方面进行完全的统一。三是管理容器环境和应用也较为复杂,不仅需要多类技术支撑,包括容器管理、编排、应用打包、容器间的网络、数据快照等,还需要增加对容器的监控。四是容器在应用过程中还需要考虑在容器间、容器与系统间的性能隔离,内核共享带来的安全隔离问题。五是在使用习惯角度上,容器使用习惯会有别于主机或虚拟机,容器技术在应用过程中大部分用户需要逐步引导才能适应容器的使用方式。

10.2 容器技术未来生态图及展望

 

 

posted @ 2018-12-20 11:15  康康路马  阅读(2984)  评论(0编辑  收藏  举报