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

  • 时间:
  • 浏览:14
  • 来源:我爱搬资源网 - 专注共享唐朝博客活动

      谈起容器技术,不得不提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),并为线程池池运行运行提供一致的编程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/25002/