查看原文
其他

DockerCon 2016 D2 | PPT全程实录+详细解读

2016-06-22 小数 数人云
DockerCon进入了第二天,无论是主会场General Session还是分会场演讲,内容都愈加精彩。数人云独家奉献来自Docker公司的全程PPT加详实解读,欢迎品尝——




一Ben Golub,CEO,DockerGeneral Session


21日DockerCon的General Session主题是Docker in Production,我们可以看到雇员超过500人的公司里面,73%已经在使用Docker了。


Docker在Cloud、DevOps和App方面都带来巨大变革。


Docker带给企业级应用的变革将会是渐进式的,传统应用逐步转变为适合上云的微服务架构。


Container as a Service在Agility、Portability和Control三个方面为企业应用带来巨大便利。


Docker Datacenter是Docker公司推出的CaaS服务。


Docker公司正式推出Docker Store,是提供经过验证的Docker程序的应用市场。


Docker的生态系统已经相当庞大了。


Arnaud Porterie,Senior Engineering Manager, Docker

Anusha Ragunathan,Software Engineer, Docker

Docker for Ops: Extending Docker with APIs, Drivers and Plugins


三种方式来扩展Docker:API、Plugin、Drivers,这三种方式的难易程度是由易到难递增的。


以上七张图是关于如何使用Docker API来管理Docker。


使用Docker API的难度很低。Docker的API都是RESTful风格的,基于HTTP通讯,消息格式都是Json。


有一个重要的Docker API是Docker Event API。通过Docker Event API可以获取任何Docker应用的动作,比如创建、联网、断网、结束、销毁等Docker应用全生命周期的各种动作。


https://github.com/ehazlett/interlock 展示了用Docker Event API加HAProxy实现服务发现功能。


以上九张图是关于如何使用Docker Plugin。使用Docker Plugin的难度属于中等。


Docker插件是Docker引擎额外依赖的第三方程序,Docker插件与Docker引擎通过RESTful方式通讯。


Docker插件因为是独立于Docker引擎之外又被Docker引擎依赖的第三方程序,必须是高可靠的。Docker插件也可以从Docker Store(Docker公司认证过的应用商店)下载。每个Docker插件的功能都有对应的manifest文件来定义。


未来在Docker 1.13里,每个主机可以分别安装Docker插件,而且Docker插件也会和Swarm结合,由Swarm来管理每个节点上的Docker插件,甚至也可以用插件来定制Docker编排的策略。


上面七张是是关于如何使用Drivers。使用Drivers的难度很高。


Open Container Initiative(OCI)定义了容器的runtime(运行标准),由containerd守护进程来管理容器,由runC来具体运行每个容器。


Docker对容器的运行方式是符合OCI标准的,Docker的守护进程dockerd跟containerd之间通过gRPC通讯,由containerd和runC来分别管理运行Docker容器。


runC是OCI标准的容器运行方式,还有其他方式,比如runZ在Solaris上运行Docker。



小结——管理Docker的三种方式:

1、使用Docker API,非常易用;

2、使用Docker插件,难度中等,Docker 1.12重新定义了Docker插件的接口;

3、使用Drivers,非常难,主要适用场景是要定制容器的运行环境,比如在Unix上运行Docker等。


三Mindy Preston,Software Engineer, DockerUnikernels and Docker: From Revolution to Evolution


Unikernel是指运行时不区分内核态与用户态,Unikernel程序完全运行在物理地址空间,Unikernel程序对操作系统无依赖。


Library OS是在Unikernel程序中,用于组合各种依赖库来代替传统OS的功能。应用程序+Library OS组成Unikernel程序。


其实人们并不关系Container或者Unikernel,人们只关心应用程序运行得好不好。而且人们希望程序的运行尽量简单、高效,不希望程序有复杂的配置和过多的资源消耗。


通常,为了运行一个程序,需要:源代码、编译器、额外的依赖库、OS(包括共享库)。但是这样很容易碰到运行时各种错误。


用Docker的方式运行程序的话,用Dockerfile定义程序构建方式以及程序运行时依赖,这样使得程序具有可移植性,但是Docker运行程序仍然不完美,对宿主操作系统有依赖。


Unikernel程序,完全消除了对OS的依赖,使得Unikernel程序自成一体完全没有外部依赖。


可以在容器里构建Unikernel程序。



现在的OS要支持各种复杂功能,时间、网络、存储、日志、各种IO,等等。而且对Linux内核进行调试修改的话非常复杂,而且非常麻烦。


使用Unikernel的话,可以自行定制OS的各种库,比如网络库。这样Unikernel程序开发者同时也对OS有完全的掌控,可以任意定制。


Unikernel程序开发者可以任意修改OS的状态,这样可以测试Unikernel程序在各种边界情况下的运行情况,比如Unikernel可以定制出文件系统写满的状态、快设备总是繁忙的状态等等。


很多程序都对网络有依赖,而且网络配置很复杂,OS上常常要配置VPN、DNS、Proxy等等。VPNkit是一种Library OS,可以运行在Docker里。VPNKit提供了网络方面的依赖库,可以用于对网络有依赖的Unikernel程序开发。




目前Docker的一些Library OS:VPNKit、HyperKit。MirageOS也是一种流行的Library OS。unikernel.org列出了一些常见的unikernel项目。



今年的DockerCon完满落下帷幕。我们看到Docker从一个新生的开源技术成长到如今遍布世界大多数地方,并且它仍然是新鲜的,充满活力的,值得探索的。巨额融资、IT巨头竞相支持的背后,是一片更为广阔的Docker生态链。



微信号:dmesos

数人云

将应用弹性做到极致

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存