容器技术架构、网络和生态详解

  • 时间:
  • 浏览:4
  • 来源:我爱生活网 - 专注共享客串博客资源

      谈起容器技术,不得不提Docker技术。Docker 是 PaaS 提供商 DotCloud 开源的一一一三个小 多高级容器引擎,源代码托管在 Github 上,基于Go语言并遵从Apache2.0协议开源。Docker大慨物理行业的集装箱对物流的影响一样,成为Container上运行镜象的统一打包和交换的标准。

      当当我们 知道,Docker使用了容器的环境隔离和资源限制技术,把镜像和运行环境打包到Image中。Register支持容器上传和下载功能。Docker一起提供了Build,Ship和Run,运维只上能 不能在环境重配置好Docker,剩下的工作只是部署容器,实现Build Once Run Anywhere和Configure Once Run Anything;从而有助了容器技术的爆发。

      在架构上,Docker采用Client Server模式和插件式挂接,Docker的后端采用非常松耦合的架构,模块之间相互独立,用户通过Docker Client与Docker Daemon建立通信,并发送请求给Docker Daemon。Docker Daemon提供Server功能接受Docker Client的请求;就让通过Engine执行Docker组织组织结构的一系列工作,主次工作都会以一一一三个小 多Job的形式的处于。

      Docker讲底层容器运行时剥离出来,实现更好的平台无关性。LibContainer是对各种容器的抽象,发展为RunC,并贡献给OCP组织作为定义容器环境的标准。Docker容器的三大编排工具,Compose、Swarm和Machine。Compose是服务编排工具,是定义和运行Docker主机上多容器应用的工具,通过单独文件,定义多容器应用并运行容器。

      Docker的网络技术和能力总爱是容器技术中最难、也是最不看好的技术之一,Libnetwork是Docker公司正在开发的新的网络底层架构,由libcontainer和Docker Engine中的网络相关的代码合并而成。Libnetwork的目标是引入了容器网络模型(CNM),并为应用tcp连接提供一致的编程API接口以及网络抽象。 Libnetwork的容器网络模型带有了一一一三个小 多重要概念,Network Sandbox,Endpoint和Network。

      Weave创建了Networking Plugin技术,目前心智心智心智心智性开花结果期期期 是什么的有Networking Plugin和Volume Plugin。

     Weave方案带有两大组件,用户态Shell脚本和Weave虚拟路由容器。Weave虚拟路由容器上能 不能在每个宿主机上布置第三方插件,把不同宿主机的Route容器连接起来,使得Docker工具生态无缝集成到Docker。(這個 网络方案介绍,请参看<容器技术架构、网络和心态详解>电子书)

      Weave创建一一一三个小 多虚拟网络,链接多个主机的Docker容器,并使当当我们 上能 不能被自动发现,对使用该网络的应用来说,什么都有有有容器就像是链接在同一一一三个小 多网络交换机上,太少配置端口映射、链路等参数。

容器和容器OS

      CoreOS是最为受欢迎的容器虚拟化OS,专为Docker设计和内核裁剪。 CoreOS带有一一一三个小 多关键容器集群管理工具,etcd主要实现集群服务发现、信息共享和数据同步;而Fleet实现集群情况表维护、容器操作和确保服务一致可用。

      VMware也推出了容器OS系统Photon,在VMware上创建VM,假若安装Photon系统即可部署运行容器,假若支持目前主流的Docker、Rkt和PGC容器平台。Photon上能 不能容器管理认证工具Lightwave配合,上能 不能实现更好的权限管理。

Docker容器和存储

      Docker容器在数据读写和存储上,是采用分层和COW的存储技术实现,Docker這個 的COW文件系统不支持数据持久保存,在容器被删除或重启后,就让的文件更改就会丢失(变化的数据被以COW写到一一一三个小 多新的位置)。

      Volume的引入我确实避免了数据丢失问題,假若当容器迁移后,数据卷无法跟随Docker容器一起迁移,ClusterHQ的Flocker的冒出恰恰避免Volume的缺陷,使得数据跟随Docker迁移。

      Flocker的容器和存储卷迁移分为全迁移和增量同步一一一三个小 多过程,配置文件描述Docker部署最好的依据和情况表,运行配置则生效(迁移Redis);以迁移本地存储(非共享存储)为例,整个过程为先打快照,全迁移,增量同步。

      Flocker以Docker Volume Plugin的最好的依据部署在Docker中,与Docker集成。目前共享存储的支持能力比较心智心智心智心智性开花结果期期期 是什么,支持的产品包括AWS EBS、Scale IO和XtremIO等,假若支持如AWS、Rackspace等云平台;本地存储最好的依据在技术心智心智心智心智性开花结果期期期 是什么度上从不高。

      Flocker通过Storage Driver屏蔽存储差异,并通过存储提供的Flocker标准接口实现对底层存储操作,当主机容器在不同主机间迁移时,Flocker只上能 不能对容器的Volume进行主机的重映射。

Docker与PaaS

      随之容器的发展,CaaS容器即服务的概念也应时而生,其大意只是基础设施以容器的最好的依据来供给给应用使用。以容器为单位成为PaaS的共识,基于Docker的容器打包和挂接有望成为PaaS平台的标准, Docker将大幅拓宽PaaS的应用范围,并有助PaaS的快速发展。

      基于容器的打包一统新一代PaaS,第三代PaaS,DEIS、Flynn等均基于Docker,挑战老的PaaS平台。

      PaaS就让冒出了数年时间,第一批是Azure和Heroku等公用云服务,就让冒出的Cloud Foundry和OpensShift允许用户建立本人的PaaS,包括了组织组织结构数据中心以及云环境。现在,第三代PaaS浪潮正在到来。

      Flynn是一一一三个小 多开源的PaaS平台,可自动构建部署任何应用到Docker容器集群上运行,其功能特征与组件设计少量参考了传统的PaaS平台Heroku。Flynn目前还都会很稳定。但整个系统非常灵活,相互松耦合,便于任意组件的替换。

Docker与IaaS平台

      主流IaaS云平台都支持Docker的运行 (AWS、Google Compute Engine、Rackspace等)。Docker弥合了不同IaaS之间的差异,Docker的轻量和可移动性使得其比较适合用在Hybrid Cloud中。降低了IaaS服务商用户粘性,使得跨云服务商迁移更加自由。从而使得IaaS服务商被管道化。就让Container把安全问題避免了,就让就会有比较大的变化。

      冒出基于Docker的Container as a Service或Orchestration as a Service,如Tutum,上能 不能避免IaaS的锁定,甚至太少关心是运行在物理设施上,还是运行在哪家IaaS平台上。

      2014年6月Rackspace发表声明和CoreOS合作协议协议提供Baremetal as a Service方案OnMetal,结合了云计算的灵活性和基于container的高性能虚拟化,提供single tenant baremetal cloud serivce。這個 模式将影响当前以虚拟机为核心的IaaS平台,预计后续就让冒出一起提供Docker over Baremetal、 Docker over VM和VM這個 混合的资源分配和调度云平台。

     Docker也引发了基于容器的应用集群管理平台,如Kubernetes得到了微软、红帽、IBM、Vmware、Docker、Mesosphere、CoreOS和SaltStack等多家厂商的支持。容器集群管理技术就让是因为着Openstack边缘化。

Docker与Openstack

      从目前来看,Docker集成到OpenStack的方案主要有下面這個 方案。主流观点认为基于Nova调度和管理Docker容器不到发挥Docker的优势,而把Docker与Heat集成更能发挥其优势。

      Docker Driver for Nova通过nova-api,docker driver作为hypervisor部署。原理很好理解,nova-computer-api调用virt api 将nova docker driver作为http agent和docker rest api互通,从而控制docker和与容器的通信。另外,glance作为docker register服务的本地节点,提供image服务。這個 最好的依据不支持Docker的這個 高级特征。

      Docker Plugin for Heat通过Heat组件来实现。利用heat来管理docker的资源模板,一一一三个小 多多上能 不能避免nova仅仅在hypervisor层面对docker管理的限制,比如這個 docker這個 构建的能力,或是docker容器之间的网络管理等。這個 最好的依据上能 充分利用Docker的API,但缺陷quota、 host aggregate 调度机制,不到用Glance来管理镜像。

Docker与DevOps

      基于Docker上能 不能更好的实现DevOps。我确实有這個 工具适合DevOps部署,使开发人员和操作更贴近,但Docker是一一一三个小 多与DevOps原则密切相关的框架。使用Docker,开发人员上能 不能专注于当当我们 的代码,而从不担心在生产环境中运行它们的负面影响。

      DevOps团队上能 不能将整个容器作为容器避免,文件系统和依赖关系管理的分层最好的依据使得环境的配置更容易维护。在相同的源代码控制系统(如Git工作流程)中版本化和维护Dockerfiles使得它非常有效地管理多个开发/测试环境。不同环境的多个容器上能 不能在同一VM上运行时被隔离。Docker上能 不能很好地使用现有的工具,如Jenkins,Chef,Puppet,Ansible,Salt Stack,Nagios和Opsworks。

      Docker有就让对DevOps生态系统产生重大影响。它上能 不能从根本上改变开发人员和运营专业人员合作协议协议的最好的依据。新兴DevOps公司,如CloudMunch,Factor.io,Drone.io就让上能 不能采用Docker并将其带入当当我们 的CI和CD避免方案。

Docker与微服务架构

      基于Docker容器和其生态系统的微服务架构是下一代PaaS的核心,在Docker冒出就让,我确实当当我们 谈论微服务架构,假若我我确实是找不到实现的。微服务要运行,首先上能 不能一套执行的环境。这套环境不到对组织组织结构有依赖性。一起,执行环境的粒度又上能 不能足够的小,一一一三个小 多多上能 称之为”微“,假若必然是对资源的巨大浪费。一一一三个小 多微服务上能 不能跑在一台虚拟机后面 ,假若虚拟机粒度找不到来太少,即使最小的虚拟机,也大慨也一一一三个小 多多核。服务一一一三个小 多用户的服务,显然用不了一一一三个小 多核。一起,虚拟机有找不到一套方便的管理机制,上能 快速的让哪些地方地方服务之间上能 组合和重构。

      Docker冒出就让,当当我们 想看 了微服务的一一一三个小 多非常完美的运行环境。一一一三个小 多容器只是一一一三个小 多完正的执行环境,不依赖组织组织结构任何的东西,具备独立性。一台物理机器上能 不能一起运行成百上千个容器,粒度细。其计算粒度足够的小。容器上能 不能在秒级进行创建和销毁,非常适合服务的快速构建和重组。数量众多的容器编排管理工具,上能 快速的实现 服务的组合和调度。

      目前围绕Docker已形成庞大的生态系统,带有编排/调度、容器/OS、应用部署、网络/SDN、Hosting/SP、Big Data、配置管理工具、开发工具等。

      互联网厂商/云服务商加入Docker生态圈,在容器部署、管理、编排等领域发力,抢占容器集群管理的标准控制权,积极部署Container和仓储服务,打造基于本人云服务的应用生态体系。

       Docker将催生云计算服务标准化,上能 不能在系统的构建者和使用者之间划出一根绳子 清晰的界限,将IT系统的交付标准化。譬如游戏的开发商上能 不能交付标准化的服务给游戏的发行商,发行商在不依赖开发商的情况表下上能 独立运营系统,就让交由第三方运营系统。

       Docker Hub为组件/系统提供商建立了一一一三个小 多部署到Docker 上的生态、App Market 环境。本人应用的普及依赖公有仓库,企业级应用普及依赖私有仓库。为私有容器提供安全、高速访问和多云联通。

Docker的挑战者Rocket

      CoreOS 使用 Docker 容器构建其服务,并对 Docker 项目做出巨大贡献。但2014年CoreOS发表声明正在开发本人的容器引擎Rocket ,就让其不同Docker 的发展方向。CoreOS在 Docker 早期就让认为 Docker 在为开发人员提供一一一三个小 多标准的容器架构,繁杂了开发人员的日常工作。就让发现 Docker在获得什么都有有有资金后的使命就让扩张找不到来太少,现在都会在谈论 Docker 容器,只是 Docker平台。

      Docker的Roadmap表明旨在太少 构筑一一一三个小 多完正的Docker平台,包括Machine (系统配置)、Swarm (Docker 化应用的原生集群)、Compose (多容器应用组装)。Docker的发展方向将对Docker的俯近生态产生繁杂影响,后续就让面 临更多来自生态的挑战,

本文由

架构师技术联盟

发布在

ITPUB

,转载此文请保持文章完正性,并请附上文章来源(ITPUB)及本页链接。

原文链接:http://www.itpub.net/2019/06/28/2502/