【不吹不黑】详解容器技术架构、网络和生态

戳蓝字“CSDN云计算”关注我们哦!

640?wx_fmt=jpeg
作者 |  Hardy
责编 | 阿秃

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

在架构上,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。

640?wx_fmt=jpeg

Weave方案包含两大组件,用户态Shell脚本和Weave虚拟路由容器。Weave虚拟路由容器需要在每个宿主机上布置第三方插件,把不同宿主机的Route容器连接起来,使得Docker工具生态无缝集成到Docker。

640?wx_fmt=jpeg

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);以迁移本地存储(非共享存储)为例,整个过程为先打快照,全迁移,增量同步。

640?wx_fmt=jpeg

Flocker以Docker Volume Plugin的方式部署在Docker中,与Docker集成。目前共享存储的支持能力比较成熟,支持的产品包括AWS EBS、Scale IO和XtremIO等,并且支持如AWS、Rackspace等云平台;本地存储方式在技术成熟度上并不高。

640?wx_fmt=jpeg

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

 

Docker与PaaS

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

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

640?wx_fmt=jpeg

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把安全问题解决了,可能就会有比较大的变化。

640?wx_fmt=jpeg

出现基于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集成更能发挥其优势。

640?wx_fmt=jpeg


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,开发人员可以专注于他们的代码,而不必担心在生产环境中运行它们的负面影响。

640?wx_fmt=jpeg

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

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

640?wx_fmt=jpeg

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

640?wx_fmt=jpeg

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

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

Docker的挑战者Rocket

CoreOS 使用 Docker 容器构建其服务,并对 Docker 项目做出巨大贡献。但2014年CoreOS宣布正在开发自己的容器引擎Rocket ,因为其不同Docker 的发展方向。CoreOS在 Docker 早期时候认为 Docker 在为开发人员提供一个标准的容器架构,简化了开发人员的日常工作。后来发现 Docker在获得很多资金后的使命已经扩张太多,现在不是在谈论 Docker 容器,而是 Docker平台。

640?wx_fmt=jpeg

Docker的Roadmap表明旨在想要构筑一个完整的Docker平台,包括Machine (系统配置)、Swarm (Docker 化应用的原生集群)、Compose (多容器应用组装)。

Docker的发展方向将对Docker的周边生态产生复杂影响,后续可能面临更多来自生态的挑战,关于Docker详细分析,请持续关注CSDN云计算。

640?wx_fmt=png

???特邀各路大大免费入驻CSDN啦,除云计算相关书籍免费赠送外,还有海量福利奥~详情戳?下方图片,么么哒~

640?wx_fmt=png

福利
扫描添加小编微信,备注“姓名+公司职位”,入驻【CSDN博客】,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:

  • 【建议收藏】数据中心服务器基础知识大全
  • 博文强识|支付宝 App 是如何建设移动 DevOps 的?
  • 在办公室装警报、参加杨超越编程大赛——“开发者之友”声网Agora团队是怎样炼成的?

  • 大规模1.4亿中文知识图谱数据,我把它开源了
  • 巨头垂涎却不能染指,loT 数据库风口已至

  • “国家队”入局! 中移动、银联等宣布区块链服务网络(BSN)正式内测!

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jeecg boot一对多新增的附表不会主键是一个string_测试开发专题:spring-boot如何使用JPA进行双向一对多配置...

本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置。 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖&#xff0c;pom文件里加入下面内容 <dependency><groupId>org.springframework.boot</groupId><artif…

揭秘阿里机器翻译团队:拿下5项全球冠军,每天帮商家翻译7.5亿次

摘要&#xff1a; 跨境电商市场越来越大&#xff0c;商家们也遇到了新问题。以阿里巴巴国际站为例&#xff0c;七成买家以英语沟通&#xff0c;剩下三成的小语种&#xff0c;却难住了平台上近96%的卖家。 “翻译和本地化都做不好&#xff0c;说明你对海外市场根本不重视&#x…

IDC与浪潮联合发布2019数据及存储发展报告:中国迈入新数据时代元年

戳蓝字“CSDN云计算”关注我们哦&#xff01;企业数字化转型进程不断加速&#xff0c;物理世界与虚拟世界正在融合。当两个世界不断以数据的形式互相映射和影响的时候&#xff0c;时代将从量变积累到质变。新数据时代元年已经到来。10月18日&#xff0c;在IDC中国数字化转型年度…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(执行安装_07)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;修改配置文件_06&#xff09; 执行安装前的准备工作&#xff1a; 创建ORACLE实例前提&#xff0c;准备下面6项工作 序号说明链接①安装操作系统https://blog.csdn.net/weixin_40816738/…

e盾网络验证源码_Laravel [mews/captcha] 图片验证码

1 安装配置1.1 使用 composer 安装 [mews/captcha] 扩展composer require mews/captcha项目根目录 composer.json -> require 会新增一行(我的 laravel 版本是 5.6)"mews/captcha": "^3.0"1.2 config/app.php 添加相应代码providers>[ // ... …

开源工具Arena,数据科学家再也不用为Kubernetes犯难啦!

摘要&#xff1a; 为什么要用Kubernetes去难为数据科学家呢&#xff1f; 2018年7月&#xff0c;阿里云将深度学习工具Arena贡献给了开源社区&#xff0c;数据科学家无需学习底层IT资源使用&#xff0c;即可在云端运行深度学习&#xff0c;一分钟内启动深度学习任务&#xff0c…

mysql时间模糊查询_mysql中那些根据时间查询的sql语句

在我们使用mysql是免不了要根据时间去查询一些数据&#xff0c;这个时候一般有几种方式可以去查询。第一种数据库&#xff0c;如果有数据新建时间可以以这个时间为节点&#xff0c;通过当前时间条件去比较时间来查询到此段时间内的数据例如&#xff1a;这个是可传参数的SELECT …

专访阿里数据库备份专家 教你pick最有效的备份系统

摘要&#xff1a; 数据库备份是个老生常谈的话题&#xff0c;看似很简单&#xff0c;但在实际操作过程中&#xff0c;运维人员往往会遇到这样或那样的坑。那么&#xff0c;如今的数据库备份有哪些挑战&#xff1f;如何构建有效备份系统&#xff1f;有什么解决办法&#xff1f; …

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(静默创建实例_08)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;执行安装_07&#xff09; 创建ORACLE实例前提&#xff0c;准备下面7项工作 序号说明链接①安装操作系统https://blog.csdn.net/weixin_40816738/article/details/104454497②安装常用工…

当我们在聊 Serverless 时你应该知道这些 | CSDN博文精选

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 杨泽强&#xff08;竹涧&#xff09;转自 &#xff5c; CSDN企业博客责编 | 阿秃说起当前最火的技术&#xff0c;除了最新的区块链、AI&#xff0c;还有一个不得不提的概念是 Serverless。Serverless 作为一种新型的互联网架…

androidbyte数组使用_android byte的用法

byte 为有符号数据&#xff0c;引用文章android byte的使用暴走邻家 2018-01-24 08:55:07 10333 收藏 4分类专栏&#xff1a; android Android基础 文章标签&#xff1a; android app java byte 函数版权今天&#xff0c;简单讲讲android里byte的使用。这个其实很简单&#xff…

Apache RocketMQ 正式开源分布式事务消息

摘要&#xff1a; 近日&#xff0c;Apache RocketMQ 社区正式发布4.3版本。此次发布不仅包括提升性能&#xff0c;减少内存使用等原有特性增强&#xff0c;还修复了部分社区提出的若干问题&#xff0c;更重要的是该版本开源了社区最为关心的分布式事务消息&#xff0c;而且实现…

如何使用阿里云ARMS诊断Java服务端报错问题

摘要&#xff1a; 这是ARMS团队推出的“网站常见问题1分钟定位系列篇”第二文。 我的网站为什么一错再错 网页报错&#xff0c;尤其是5XX错误是互联网应用最常见的问题之一。5XX错误通常发生于服务端。服务端是业务逻辑最复杂&#xff0c;也是整条网络请求链路中最容易出错、出…

.iml文件_jetbrains误删maven 项目.iml文件后的处理方法

jetbrains 打开maven项目&#xff0c; 出现如下提示这个时候打开 Terminal在提示符下输入&#xff1a;mvn idea:module 回车运行&#xff0c;就可以修复。Relationship between .iml file and pom.xml fileThe intelliJ idea doesnt understand the maven project model (POM.x…

亚马逊消费者业务宣布永久关闭 Oracle 数据库,去O新进展;华为发布最新5G全系列解决方案;苹果正研究新设备“智能戒指”……...

戳蓝字“CSDN云计算”关注我们哦&#xff01;嗨&#xff0c;大家好&#xff0c;重磅君带来的【云重磅】特别栏目&#xff0c;如期而至&#xff0c;每周五第一时间为大家带来重磅新闻。把握技术风向标&#xff0c;了解行业应用与实践&#xff0c;就交给我重磅君吧&#xff01;重…

vs未能找到程序集platform.winmd_PP体育直播大连人VS恒大:新老8冠王首尾对决竟有十大看点...

北京时间8月25日&#xff0c;中超大连赛区的第7轮较量&#xff0c;广州恒大迎战大连人&#xff0c;恒大取胜即可继续位列榜首&#xff0c;同时获得半程冠军。而对于前6轮不胜的大连人来说&#xff0c;已经被逼上了绝境。虽然大连人晋级争冠组的前景极为渺茫&#xff0c;但一胜难…

Sentinel如何通过限流实现服务的高可用性

摘要&#xff1a; 在复杂的生产环境下可能部署着成千上万的服务实例&#xff0c;当流量持续不断地涌入&#xff0c;服务之间相互调用频率陡增时&#xff0c;会产生系统负载过高、网络延迟等一系列问题&#xff0c;从而导致某些服务不可用。如果不进行相应的流量控制&#xff0c…

京信通信:数据智能为生产调试“增效瘦身”

摘要&#xff1a; “数据驱动测试优化&#xff0c;突破自动测试边界&#xff0c;赋能智慧测试新模式。”——京信智能制造副总经理葛鑫 “进入车间&#xff0c;映入眼帘的是一条长约20 米的 O 型生产线&#xff0c;产线前三名工人和几个机器人正协同工作&#xff0c;将各种元器…

c++代码好玩_一行Python代码能干嘛?快来看看吧!有表白利器哦

python有很多优雅有趣的代码写法&#xff0c;同时还很简短&#xff0c;以至于当我刚开始接触这个编程语言的时候&#xff0c;就爱不释手。而前几天的编程语言榜单中python也超越了java成为了第一&#xff0c;挺替python开心的。python到底有多有趣呢&#xff1f;一行代码告诉你…

探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Mr-Bruce转自 &#xff5c; CSDN博客责编 | 阿秃几周前&#xff0c;笔者做了一个与HDFS有关的技术分享&#xff0c;以知识普及为目的&#xff0c;主要分享了Hadoop发展历史、HDFS核心概念、整体架构、工作机制等内容。本文大…