图片来源:Unsplash

作者

晗狄

文章来源

架构师技术联盟

如需转载,请联系原作者授权

谈起容器技术,不得不提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与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出现之前,虽然我们谈论微服务架构,但是其实是很难实现的。微服务要运行,首先需要一套执行的环境。这套环境不能对外部有依赖性。同时,执行环境的粒度又必须足够的小,这样才能称之为”微“,否则必然是对资源的巨大浪费。

一个微服务可以跑在一台虚拟机上面,但是虚拟机粒度太大,即使最小的虚拟机,也至少也有1个核。服务一个用户的服务,显然用不了一个核。同时,虚拟机有没有一套方便的管理机制,能够快速的让这些服务之间能够组合和重构。

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

投稿啦!!!

精彩继续

CSDN作为国内专业的云计算服务平台,目前提供云计算、大数据、虚拟化、数据中心、OpenStack、CloudStack、机器学习、智能算法等相关云计算观点、技术、平台、实践、云产业咨询等服务。CSDN 公众号也一直坚持「与千万技术人共成长」的理念,深度解读行业内热门技术与场景应用,致力于让所有开发者保持敏锐的技术嗅觉、对行业趋势与技术获得更广阔的认知。

文章题材

  • 首先你需要关注我们的公众号“CSDN云计算”,这样你会更准确了解我们需要的文章风格;

  • 侧重于云计算领域相关的文章,可以是技术、运维、趋势等方面的务实内容;

  • 原创,要求文章有鲜明观点和看法。

投稿须知

  • 稿费:根据原创性、实用性和时效性等方面进行审核,通过的文章会发布在本微信平台。一经采用,我们将支付作者酬劳。酬劳可能不多,这代表的是一个心意,更多是因为爱好,是有识之士抒发胸怀的一种方式;

  • 字数要求:稿件字数以2K-8K为宜,少于2K或多于8K都会一定程度降低阅读愉悦感;

  • 投稿邮箱:lijy@csdn.net。或者添加微信表明来意,微信号:tangguoyemeng。请备注投稿+姓名+公司职位

如果咱们的合作稳定又愉快,还可以签订合同长期合作哦!

从容器到微服务,技术架构、网络和生态详解相关推荐

  1. GIAC 2020 全球互联网架构大会演讲实录:基于TarsGo的微服务技术架构实践

    2020年8月14日-15日,GIAC 2020 全球互联网架构大会于上周五正式在深圳开幕. GIAC(GLOBAL INTERNET ARCHITECTURE CONFERENCE)是长期关注互联网 ...

  2. 业界微服务楷模Netflix是这样构建微服务技术架构的

    原文:  https://mp.weixin.qq.com/s/C8Rdz9wFtrBKfxPRzf0OBQ 作者|杨波编辑|小智Netflix 是美国在线影片租赁商,曾利用超过 100 亿次的用户观 ...

  3. 手绘图解微服务技术架构体系

    来源:tengshe789 juejin.im/post/5c0ba2bef265da614d08fefe Hello,Microservices 什么是微服务 微服务的利与弊 什么组织适合使用微服务 ...

  4. 国内外微服务技术架构演进背景

    文章目录 (1)国内BAT互联网大厂的微服务架构演进路线 (2)海外硅谷互联网大厂的微服务架构演进路线 (3)目前国内公司的主流微服务技术栈介绍 (1)国内BAT互联网大厂的微服务架构演进路线 几乎所 ...

  5. 应用架构、业务架构、技术架构和业务流程图详解「建议收藏」

    应用架构.业务架构.技术架构和业务流程图详解「建议收藏」 应用架构(ApplicationArchitecture)是描述了IT系统功能和技术实现的内容.应用架构分为以下两个不同的层次:企业级的应用架 ...

  6. Spring Cloud微服务技术架构方案

    1.平台微服务架构 微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间胡亮协调.互相配合,为用户提供最终价值.在微服务架构中,服务与服务之间通信时,通常是通过轻量级的通信机制, ...

  7. 微服务网关spring cloud gateway入门详解

    1.API网关 API 网关是一个处于应用程序或服务( REST API 接口服务)之前的系统,用来管理授权.访问控制和流量限制等,这样 REST API 接口服务就被 API 网关保护起来,对所有的 ...

  8. 微服务系列笔记之Mico Api详解

    导语 上一篇文章中有了入门案例,现在是不是有了很好的理解,不过有个前提是你需要了解grpc技术,简单的来说grpc是一个通信框架,micro是类似的一个通信框架,只不过这个框架应用于微服务中.因此如果 ...

  9. 六, 跨语言微服务框架 - Istio Ingress和Egress详解(解决Istio无法外网访问问题)

    在微服务中另外一个重点就是网关,网关理论包含入口网关和出口网关,传统意义上的网关很难做到出口网络控制,但是对于Istio是一件非常轻松的事情(因为所有的出口流量都会经过Istio),入口网关控制解析路 ...

最新文章

  1. vector 查找最大最小值,且求最大值或者最小值在容器中的位置
  2. 3的三个整数立方和有多少个解?全球40万台计算机助力,MIT研究登上PNAS
  3. HUD - 4463 Outlets
  4. NodeJS-queryString
  5. python基础技巧总结(三)
  6. 修改页面后获得flag_互动征集丨是时候为2021立flag了
  7. D-S证据理论基本概念
  8. lstrip在python中是什么意思_为什么氦气吸入后会变声?
  9. Python学习之路28-符合Python风格的对象
  10. MediaPipe - BlazeFace原理
  11. Paragon NTFS 15Mac上NTFS分区的必备工具
  12. 马三步内可以到达的点
  13. 历史名人 明朝成化仙游抗倭首领总捕头——魏升
  14. 通过Java读取Excle中的内容
  15. DevOps在证券互联网研发中的应用与实践
  16. iOS数据模拟 Mock方案
  17. 简易的定时发送生日邮件功能(Listener+定时器+使用java发送邮件)
  18. 华为line服务器无响应,line注册链接不到服务器
  19. MYSQL数据库学习总结
  20. 小学生C++趣味编程 2023 01 09 测试

热门文章

  1. php强制cookies,php Cookies操作类(附源码)
  2. php 加载redise_PHP Redis扩展无法加载的问题解决方法
  3. 小县城里的体制内剩女:一个日益庞大却被悬置的群体?
  4. 清华“最强本科生”揭晓!网友:我大概是来凑数的……
  5. 王小云:“设谜”与“猜谜”,实现中国“密码梦”
  6. 德国力挺华为:建5G网络不排除任何设备厂商
  7. 32年寻获上帝粒子,华人女学者自述高能人生故事
  8. 爱因斯坦:量子物理与抽象数学(广义)
  9. python达梦数据库_python 操作达 梦数据库
  10. 课堂笔记——计算机体系结构(1)