京东云、新浪微博等专家畅谈Docker未来格局:开放与竞争(上)

田琪(@摇摆巴赫)是京东资深架构师,10年互联网行业从业经验,之前曾分别就职于搜狐、新浪、腾讯等公司,目前负责京东云主机及云数据库的架构及研发工作,对云计算基础技术有深刻理解。

DockerCon 2015于6月22-23号在美国旧金山落下帷幕,这个由Docker公司发起的Docker领域峰会,包括Docker公司CEO在内的多位领域专家发表了精彩演讲。峰会展示着Docker领域的成就,也预示着Docker领域的未来方向。田琪作为国内容器化方向的先行者,受邀参加了此次峰会,峰会上究竟有哪些见闻,Docker未来又将走向何方,田琪在“QCon高可用架构群”中做了分享。本文由群编辑根据分享记录整理而成。

大会第一天


上午

大会第一天上午的内容最多,先是放了一些小动画介绍Docker的发展历程等,开场是Docker公司CEO Ben Golub介绍自己及docker,重点介绍了Docker近期发展的一些数字,以及过去一年的增长量:

  • 贡献者增长了183%
  • GitHub上关于Docker的项目增长了515%
  • Docker提供的工作机会增长了1720%
  • 使用Docker构建的应用程序增长了934%
  • 容器的下载量增加了18082%

随后,他介绍了Docker的下一步主要工作:在多容器运行及管理上将做更多工作。

之后CTO Solomon Hykes登场,主要技术内容都在这里。他首先介绍了他们的宏伟目标:“For the next 5 years, we’re going to build a software layer to make the internet programable”;然后介绍了后续具体的目标:“Reinvent the developer toolbox”

其中提到,开发者构建分布式系统非常困难,原因在于工具不够充分,我们要为分布式系统专门建立相应的工具集,具体而言,包括:

1. runtime (How do I run my code repeatably on different

解决在不同机器运行相同代码的问题:即Docker Runtime。

2.packaging & distribution (How do I ship my code across many different machines)

解决代码分发部署问题,介绍docker distribution tools项目,地址:https://github.com/docker/distribution

3. service compostion (How do I organize my application in scalable services)

解决应用的分布与扩展性方面的问题:介绍Docker Compose项目。

4. machine management (How do I deploy many machine to run my code)

解决机器管理等问题:介绍Docker Machine项目。

5. clustering (How do I stop worrying about individual machines)

介绍Docker Swarm项目。

6. networking

介绍Docker网络方面的解决方案,介绍了很多厂商的网络解决方案,这里提到的比较重要的观点是,Docker网络解决方案的目标是不动你原有的infrastructure,容器网络问题应该在应用层解决。

7. extensibility (How do I add my own tools to the tool box)

介绍Docker Plugin项目,下列功能会以plugin形式存在:

  • network plugin
  • volume plugin
  • scheduler plugin
  • service discovery plugin
  • more to come…

8.Build better plumbing

想要构建一个好的开发者平台需要很多小的构件支持,这里介绍Docker用到的这些构件,比如namespace、cgroup、device mapper等,并且介绍Docker自己创造的构件,包括:storage、oscontainers、networking等。重点介绍项目:Notary,项目地址:https://github.com/docker/notary 一个内容管理和安全验证的项目;OS Container;介绍了RunC项目,项目地址:https://runc.io

9. promote open standards

介绍Docker的真正价值不是技术,而是标准,Docker作为事实标准应该提供一个开放公开的标准给大家。然后重点介绍了OCF,Docker开放的标准规范,并介绍了RunC作为这个标准的一个开源实现。这个标准的大体内容主要在这几个方面:

  • A formal specification
  • Independent governance
  • A neutral reference implementation
  • Support from a broad coalition
  • An open door to fresh ideas

后面开始演示环节,可惜演示都失败了,然后放提前录好的视频,结果也失败了。个人认为Docker目前的重点工作主要是网络和插件体系的建立。

上午主要的技术方面的内容也就是这些,后面我主要在会场外和厂商及Docker的技术团队聊了下。

厂商方面大多数围绕Docker做云服务,即底层IaaS资源平台独立,上层提供基于Docker的代码分发、部署、CI等工作,大概有不少于10家这样的厂商在会场宣传,竞争看似比国内更激烈。还有一小部分围绕Docker提供product或者solution的公司,这点国内也是这样。重点跟flocker这家公司聊了下,了解下他们做的Docker存储产品,用于解决Docker volume的问题。开始和我聊的小妹明显不是搞技术的,问到存储是否支持快照,是否需要停止容器及live migration等问题就答不太上来了,后来和技术聊还可以。总体他们做的事情是让stateful的容器可以live migration。

后来找到Docker registry的团队技术人员,跟他们介绍了我们最近开源的Docker镜像存储项目speedy(项目地址:https://github.com/jcloudpub/speedy),他们表示很感兴趣,欢迎我们提交driver的驱动给他们。另外问到Docker registry v1什么时候会被废弃,他们表示肯定会被废弃,但只是还没有决定时间。

下午

后续参加了一些小场的分享,印象比较深的有这几个:

Docker Plugins

这场的主题之前是保密的,参加了才知道是讲docker plugin的,主要介绍Docker插件体系是Docker目前重点工作之一,主要内容:

docker的插件体系结构是目前的重点工作,目前支持的插件主要有网络和存储,网络的插件实现支持weave,存储的插件目前支持flocker,后续会支持日志插件。插件会以进程方式存在,使用domain socket通信,协议是json或者http,这样插件可以使用任何语言编写。插件可以通过容器方式部署,演示了一个在线容器迁移的demo,利用flocker及weave插件。

Docker networking

主要介绍了Docker libnetwork项目,将Docker的网络抽象成了endpoint、network、sandbox等实体。

  • endpoint指服务之间的链接
  • network是一堆可通信的endpoint的集合
  • sandbox是一组可连通容器的集合

另外提到服务发现会是libnetwork的基本功能,目前通过DNS实现,将来可以提供其它实现,这里还强调了Docker网络解决方案应该在应用层,不动原有的基础设施层,这样对底层网络没有依赖和改造的成本。

大会第二天


上午

general session议题比较商业,不像第一天比较技术一些,主要内容:

  • 宣传Docker是如何降低企业项目发布迭代周期的,如何使用docker整合dev及ops团队。
  • 介绍docker hub在过去的业绩及增长,介绍docker hub的商业版docker trusted registry,商业版支持安全认证,访问权限控制及审计功能。
  • 介绍微软公司在容器方面进行的工作,宣传微软已经将容器技术整合进入自己的开发工具,平台,操作系统及云等平台上。这里国外开发者跟国内开发者类似,对微软也都是比较调侃的态度。从现场观众的反映比较容易看得出来。
  • 最后现场演示了一个Docker的UI项目,集成了Docker的machine、compose、swarm等项目,管理和部署整个Docker集群。

下午

Shopify公司的人介绍自己公司的服务架构。议题是:routing and discovery at shopify。这个议题非常有新浪微博范,里面很多内容都非常熟悉,基本也都是大型互联网系统架构的一些基本常识,印象比较深的点有这些:

shopify自己开发了一个Toxiproxy的项目来模拟tcp各种延迟及问题来试他们的系统,这个项目的地址是http://github.com/shopify/toxiproxy。他们整个服务体系后端的基础目标:

  • No single point of failure
  • Stale reads > no reads
  • Reads order of magnitude larger than it writes
  • Fast convergence

介绍Shopify使用DNS来完成服务发现。

最后他们还表达了内部对ZooKeeper的使用及观点,也是觉得zk的客户端实现过于复杂,运维和操作成本比较高。

另外一个印象较深的topic是关于Docker security的主题:least-privilege microservices。

首先亮出他们的核心观点:

“every process must be able to access only the information and resources that are necessary for its legitimate purpose”

首先介绍profile概念,分别介绍不同类型服务所依赖的资源,比如:

  • 前端服务,比如php 依赖后端的众多暴露的API
  • 后端服务,比如MySQL依赖网络
  • 计算服务,比如Hadoop依赖cpu资源,会产生大量的workload

然后引入进程监控概念,通过strace -c -t -p <进程ID>来统计进程所用到的所有syscall,然后提到通过一些手段来限制相应进程用到的syscall。

后续介绍Docker已经存在的一些security方面的限制手段。比如:cgroup、namespace、Linux Security Modules、Linux Capabilities、ulimit、User namespace等。

另外提出在默认发行版中去除一些不需要的包,用户以及命令工具等来提高默认安全性,随后提出通过一个security profile的配置来统一规范容器的安全性,并配套相应的工具。

总体上这个主题内容主要是一些想法并且希望大家一起来指定这个安全的规范以及开发相应的工具。

后面简单介绍下个人参会感受,只代表个人观点。

参加这个会议我个人主要两个目的:

  1. 了解Docker正在做什么
  2. 了解Docker周边厂商正在做什么

厂商这边和国内也差不多,都是一些云服务相关的,但是竞争更激烈一些,有大约10家做类似服务的公司。Docker本身目前最重要的两个工作,一个是libnetwork的开发,另一个是插件体系的支持。

最大的新闻是Docker推出OCP开放容器项目:

这里面有很多故事的,不是表面那样Docker的人和CoreOS的人握个手,搁置争议,共同开发。实际上Docker一直非常aggressive,视其它生态厂商为竞争对手,从它发布项目的布局不难看出,基本上所有的事情都是打算自己做的。

这个OCP项目的产生我个人认为只是Docker一个妥协无奈的选择而已,Docker本身的核心技术门槛并不高。所以CoreOS搞Rocket,如果Docker继续封闭,其它厂商有可能去拥抱CoreOS的runtime。所以Docker只能被逼开发标准,但是它们同时将libcontainer作为事实标准放入了OCP中,也可以看出动机,也就是Docker只是表面上和CoreOS和解。我觉得Docker项目现在的情况和当初的OpenStack有些相像,最终何去何从我们拭目以待。

号外



在田琪老师分享之后,闫国旗、王渊命和陈飞三位专家也参与了讨论,最后还有Q&A环节,相关内容稍后发布,敬请期待。

感谢刘世杰@猎聘网的记录与整理,臧秀涛@infoq的校对与发布,其他多位编辑组志愿者对本文亦有贡献。读者可以通过搜索“ArchNotes”或长按下面图片,关注“高可用架构”公众号,查看更多架构方面内容,获取通往架构师之路的宝贵经验。转载请注明来自“高可用架构(ArchNotes)”公众号。

下篇

传送门

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-15 00:15:05

京东云、新浪微博等专家畅谈Docker未来格局:开放与竞争(上)的相关文章

BoCloud博云获京东云、京东金融联合战略投资 云计算PaaS市场现重磅操作

2018年6月26日,国内PaaS领域卓越的企业级解决方案提供商BoCloud博云,宣布完成B+轮近亿元融资,本轮融资是由京东云.京东金融联合战略投资. 通过本次战略投资引入,BoCloud博云也将成为京东云在云计算市场的重要合作伙伴,双方将会在技术.产品.市场层面进行更多合作,帮助博云进一步扩大在国内PaaS领域的领先优势,继续为实现企业数字化转型提供更优质.更可靠的产品与服务,而博云也将发挥自身优势,成为京东云深耕云计算领域的重要伙伴. 6年成长,立足市场,博云成为PaaS领域收入增长最快云

在线公开课 | 京东云监控系统设计及落地之路

谈运维为什么离不开监控?典型监控系统一般是如何设计的?业务驱动的高可用监控系统又有何不同?作为巨头之一的电商平台京东, 其基于京东云的监控系统是否有值得借鉴的地方?本文将解答这些问题.本文整理自 10 月 30 日由京东云开发者社区和英特尔联合举办的在线公开课,京东云工具产品研发部专家架构师颜志杰的在线课程演讲--业务驱动监控系统设计与落地. 世上没有百分百可靠的系统,程序.机器.网络都可能在运行中出现问题,进而导致服务异常, 带来金钱及品牌的损失,所以监控目标就是降低损失,通过发现.定位.解决

闹乌龙!京东云辟谣:停止云服务?根本没那回事儿

2月9日晚6点左右,一条以"传京东云服务将关闭 ,28日后停止技术支持 "为标题的微信开始在朋友圈中疯转,并引起了许多云服务商的强烈关注. 这条新闻的起源于是京东云发布的一条声明,网友已经做了截图(如图所示),其主要内容如下:非常抱歉在这里通知大家,由于产品发展方向的变化,我们停止了云擎.云峰(包括JMA).云汇的注册审核,并将在2015年2月28日后停止技术支持.关闭这些产品对我们而言是一个非常艰难的决定.我们希望通过精简服务内容,专注于创造更完美的产品.您现在可以登录网站迁移您的服

docker未来之我见=一个dockerfile+一个script

docker未来之我见=一个dockerfile+一个script docker repositories:https://registry.hub.docker.com/search?q=library&s=stars,仓库列表上有很多Image镜像 docker是一种部署各种app(可以是一个Linux OS如Ubuntu,Centos等,也可以是数据库如redis,mysql,mongodb等,也可以是Linux开发环境如rails,python,java等,还有其他在Linux上的各种应

优云软件数据专家最佳实践:数据挖掘与运维分析

这份研究报告,作者是优云软件数据专家陈是维,在耗时1年时间制作的一份最佳实践,今天和大家分享下,关于<数据采矿和运维分析>,共同探讨~ 数据挖掘(Data Mining)是从大量数据中提取或"挖掘"知识. 广义数据挖掘:数据挖掘是从存放在数据库.数据仓库或其它信息库中的大量数据挖掘有趣知识的过程. 数据挖掘技术侧重:1)概率与数理统计 2)数据库技术 3)人工智能技术 4)机器学习. 1. 数据清理:消除噪音或不一致数据 2. 数据集成:多种数据源可以组合在一起 3. 数据

利用京东云擎架设免费Wordpress 博客(git方式)

京东云擎(JAE)是京东推出的一款公有云产品,是京东云平台生态圈的核心组成部分.与百度的BAE.新浪的SAE同样,可是JAE刚上线不久,可能非常多人都还没听说过或不太了解.我尝试在JAE安装WordPress并成功,相对而言比BAE和SAE安装更加简单,以下就来分享一下. 一.首先打开京东云擎网址(jae.jd.com),假设有账号则直接登录,没有就注冊一个(PS:京东商城账号是能够直接登录的哦). 我这里使用京东的账号 二.进入控制台申请开通JAE服务,依照步骤填写开通. 三.开通成功后,进如

京东云引擎:免费好用的web应用托管平台

曾经很久以前,想找一个免费的空间部署一个属于自己的技术博客真是太难了,使用过SAE,但是很快就面临收费了,后面也就不了了之了.目前自己又找到一个免费的PAAS平台,可以部署各种语言的web应用,那就是京东的PAAS平台京东云擎jae,网址是jae.jd.com. 初体验 我自己使用没有看帮助手册,根据提示注册成为开发者,然后在就控制台界面创建了一个简单的应用,这个应用是jae提供的模板例子程序,并且关联了京东的代码托管系统code.jd.com,这样对于开发者来说是非常舒服的,自己的代码可以直接

【JAE】JAE京东云擎部署首个Java应用

前几天一直在寻找好用并且免费的PaaS最终就发现了国内的京东云擎JAE和国外的Heroku.我首先选择的是Heroku,因为他有一个非常强大的eclipse插件 为开发带来了很大的方便.用它提交后的代码首次运行后都是成功的,但是过一会就不知道怎么回事出现Application Error,花了老长时间都没找到原因,最终还是使用了JAE,发现JAE还是挺好用的,只不过可以创建的应用类型没有heroku丰富.下面介绍一下怎么使用JAE创建首个JAVA Web应用.我是严格按照下面的步骤操作的: 回到

[京东云][centos]配置VNC,部署Jenkins

痛点:上一篇的AWS部署的VNC不知为啥挂了,死活连不上,因此改申请京东云做部署Jenkins 预计阅读时间:20分钟 1 更新软件,安装桌面 2 yum -y update 3 yum -y groupinstall "X Window System" 4 yum -y groupinstall gnome 5 yum -y install firefox 6 7 8 添加用户,安装tigervnc-server并进行相应配置 9 sudo useradd awsgui 10 sud