Mesos和Docker的集成

  因为Docker本身想管理整个容器,从chroot、命名空间到整个命名空间的cgroup,它会和默认的Mesos容器发生冲突。因此,Mesos添加了容器机的支持,一种可插拔的机制,让Mesos的容器机子系统可扩展:最初Mesos的基于 LXC/cgroup的容器被引入到容器机API里,Docker是添加的第一个新的容器机,现在也有了全面的文档协议,介绍如何添加新的容器机,比如KVM虚拟机。

使用Docker

  为了使用Docker容器机技术,必须将其包含进Mesos slave的命令行里。比如,mesos-slave --containerizers=docker,mesos...允许在该台slave上使用Docker和Mesos容器。
  可能还想增加执行器的注册超时时间,这样Mesos不会在容器还在下载的时候就认为容器发生了故障。一开始可以设成五分钟,确保有足够的时间下载Docker镜像。所以,slave命令行类似:

mesos-slave --containerizers=docker,mesos \
--executor_registration_timeout=5mins ...

  使用带有应用程序的Docker非常简单——一旦启用了对Docker的支持,只需要设置TaskInfo或者ExecutorInfor里的container字段(类型为ContainerInfo)。

令人困惑的是,消息CommandInfo.ContainerInfo并不是正确的消息——需要在带有Docker相关字段的mesos.proto里设置最高级别的ContainerInfo。

  要想使用Docker,需要将ContainerInfo里的type设置为DOCKER,并且将docker字段设置到ContainerInfo.Docker消息的一个实例里,该消息的image属性设置为Docker镜像的名称(比如myusername/webapp)。这里可以配置很多Docker参数,比如是使用HOST还是BRIDGE网络,映射使用哪些端口或者额外的Docker命令行参数。如果想让Docker容器使用Dockerfile里指定的docker run ...,还必须将TaskInfo的CommandInfo设置成shell=false。如果设置成shell=true,就需要禁用Dockerfile里的run,指定的command会由sh -c “”来运行。
  当启动Docker容器机任务时,slave会首先获取(并且解包)沙箱里所有指定的URI,并且将Docker镜像拉取到本地。然后,slave通过运行docker启动Docker镜像。docker命令的HOME环境变量指向该沙箱,因此可以通过获取到的URI来配置Docker(详见下面的注意事项)。在Docker镜像里可以使用该沙箱,其路径保存在MESOS_SANDBOX环境变量里。最后,Docker的stdout和stderr会被重定向到Mesos沙箱里名为stdout和stderr的文件上。

高级Docker配置
必须记住的一点是,Docker容器机总是会尝试从registry里拉取Docker镜像。这意味着无法使用仅在本地安装了的Docker镜像——必须在某个地方部署该镜像。如果想要使用私有registry,可以提供一个.dockercfg文件。该文件由一个URI指定,这样Mesos slave就能够使用其自动获取URL的功能将.dockercfg文件拷贝到Docker进程所使用的HOME目录下。

  相同的API也适用于基于Docker的执行器,唯一不同之处在于,执行器代码实际上可以在Docker容器内运行。要实现这一目的,需要完成上文所述的所有事情,但是是在ExecutorInfo消息里,而不是TaskInfo消息里。
本文选自《用Mesos框架构建分布式应用》,点此链接可在博文视点官网查看此书。
                    

  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                       

时间: 2024-09-18 02:59:43

Mesos和Docker的集成的相关文章

优云实践:持续交付的Mesos与Docker导入篇

变革这个词在当今的数字化时代司空见惯,IT技术每过一段时间就会有一起革新,从WEB2.0.虚拟化.云计算.大数据.微架构.DevOps再到今天的容器Docker与Mesos. Docker的出现方便了应用的测试.部署.与升级,其将各种应用程序和它们所依赖的运行环境打包成标准的Container/Image,进而发布到不同的平台上运行.Docker的轻量级.快速部署.迁移方便的特性促进了DevOps的落地,借用容器,开发人员可以很方便的融入到产品的交付流程当中. Mesos是软件定义数据中心的最佳

以Mesos和Docker为核心的云操作系统

  11月18日,北京数人云COO谢乐冰老师在DBA+社群中间件用户组进行了一次主题为"以Mesos和Docker为核心的云操作系统"的线上分享.小编特别整理出其中精华内容,供大家学习交流.  嘉宾简介   北京数人云COO 毕业于柏林工业大学计算机系,回国就职于中国惠普,多年服务于电信行业 目前专注于Mesos和容器技术在企业生产环境特定场景的应用,实现业务规模和运维复杂度的逐步解耦,让IT基础架构推进企业在互联网时代持续发展 内容摘要   以Mesos和Dcoker为核心的云操作系

去哪儿网基于Mesos和Docker构建私有云服务的实践

本文讲的是去哪儿网基于Mesos和Docker构建私有云服务的实践[编者的话]本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得. 平台概览 2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研,并最终拍定了Docker/Mesos这一方案.下图1展示了去哪儿数据平台的整体架构: 图1:去哪儿数据平台的整体架构 该平台目前已实现了如下多项功能: 每天处理约340亿/25TB的数据: 90%的数据在100ms内完成

去哪儿网基于Mesos和Docker构建私有云服务实践

本文深入介绍了去哪儿网利用Mesos和Docker构建私有云服务的全过程,分享了从无状态应用向有状态应用逐步过度的经验与心得. 平台概览 2014年下半年左右,去哪儿完成了有关构建私有云服务的技术调研,并最终拍定了Docker/Mesos这一方案.下图1展示了去哪儿数据平台的整体架构: 图1:去哪儿数据平台的整体架构 该平台目前已实现了如下多项功能: 每天处理约340亿/25TB的数据; 90%的数据在100ms内完成处理; 最长3h/24h的数据回放; 私有的Elasticsearch Clo

Yelp是如何利用Mesos和Docker搭建混合云的?

本文讲的是Yelp是如何利用Mesos和Docker搭建混合云的,[编者的话]为了让开发人员能够在数据中心和AWS上统一管理部署服务,且不增加工作量,Yelp围绕Docker容器寻找解决办法,Eaton决定选用Apache Mesos和Mesosphere,基于Mesosphere构建了PaaSTA,开发了新的测试平台Seagull.Mesosphere和Marathon的组合让开发人员从不同平台的处理中解脱,将精力放在了代码上.过程的艰辛与最终选择的好处都在文中做了说明. 2013年底,Yel

通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

构建一个分布式系统是很困难的.它需要可扩展性.容错性.高可用性.一致性.可伸缩以及高效.为了达到这些目的,分布式系统需要很多复杂的组件以一种复杂的方式协同工作.例如,Apache Hadoop在大型集群上并行处理TB级别的数据集时,需要依赖有着高容错的文件系统(HDFS)来达到高吞吐量. 在之前,每一个新的分布式系统,例如Hadoop和Cassandra,都需要构建自己的底层架构,包括消息处理.存储.网络.容错性和可伸缩性.庆幸的是,像Apache Mesos这样的系统,通过给分布式系统的关键构

在生产环境中使用Apache Mesos和Docker

本文讲的是在生产环境中使用Apache Mesos和Docker,[编者的话]本文翻译自 IVO VERBERK博客,Docker容器软件已受到了从科技巨头到企业的广泛注意.但是,随着容器概念转变成为现实世界中的成熟技术,那么问题就变成了:怎么样才能快速把Docker应用于生产环境中呢? 介绍 在生产环境中安全有效地的运行Docker容器会有很多复杂的挑战.许多复杂性挑战都是在跨多主机间运行容器产生的.这些跨主机的容器可能需要保持或共享状态,也可能需要相互通信,还可能会随时消失.为了高容错性和可

Docker编排集成可能让合作伙伴心烦意乱

本文讲的是Docker编排集成可能让合作伙伴心烦意乱[编者的话]添加容器编排到Docker引擎的最新版本引发争论:企业IT商家想从这方兴未艾的技术中得到什么,从谁那得到. 西雅图(SEATTLE)--Docker和它的云合作伙伴们在容器编排上会有个冲突过程.  Docker引擎V1.12版集成了Swarm编排,预计在2016年下半年商业支持.Docker引擎是Docker内核和运行时创建带操作系统容器的核心软件.它的功能--现在当运行在Swarm模式时融入Docker引擎--在引擎之间依靠一个分

容器,云和代码:Yelp如何使用Mesos和Docker构建混合云?

本文讲的是容器,云和代码:Yelp如何使用Mesos和Docker构建混合云,[编者的话]为了解决Yelp的基础设施问题,Eaton带领团队对容器进行调研并寻求解决方法,最终决定使用Apache Mesos和Mesosphere.基于Mesosphere构建了PaasTA服务,为测试环境开发了Seagull平台.本文对Yelp公司采取容器方案前的困境以及采取容器方案后的好处分别进行了说明. 2013年底,Yelp的运营总监Sam Eaton意识到公司基础设施存在问题.对开发和运维人员来说,在Ye