`

Mesos和Docker的集成

阅读更多

摘要: 众所周知,Mesos全面支持Docker。但是这意味着什么呢?在命令行里运行docker run...就可以使用Docker了。还需要做什么?让我们一起研究下Mesos的高级特性——和Docker的集成。本文选自《用Mesos框架构建分布式应用》。

  因为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框架构建分布式应用》,点此链接可在博文视点官网查看此书。
                    图片描述

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

分享到:
评论

相关推荐

    sidecar-executor:借助Sidecar服务发现,在Mesos上运行Docker容器!

    使用Sidecar和Sidecar Executor,无论运行的是哪个Mesos调度程序,都可以使服务运行状况检查与服务发现统一。 该系统在可能的范围内完全与调度程序无关。 请注意,与Sidecar不同,Sidecar Executor假定任务将作为...

    持续交付系列(一):使用Docker、Mesos实现持续交付

    本文主要讲述如何为Node.js应用搭建持续集成环境。包括如何在开发机器上Docker化一个Node.js应用,如何部署Jenkins和 ...本文主要会介绍如何使用Docker和Mesos实现持续集成。 测试、搭建生产环境可用的

    Swarm和Mesos集成指南-原理剖析

    从今天开始,来自IBMPlatform软件工程师王勇桥将带来“Swarm和Mesos集成指南”系列文章,带大家了解Swarm和Mesos集成的架构和原理,Swarm基于Mesos集群的实战部署和配置,以及基于IBMPlatform自身在资源调度、分布式...

    持续交付系列(二):使用Docker、Mesos实现持续交付

    第一部分(中文翻译)我们介绍了如何Docker化一个Node.js应用,如何使用Fig部署Jenkins和DockerRegistry,以及如何实现Node.js应用的持续集成。本文是第二部分,将继续介绍Mesos和Marathon的搭建以及如何完成整个...

    Mesos+Kubernetes集成安装部署

    因为Docker本身没有提供集群管理能力,对于docker集群一台台的登陆操作不太现实,因此需要引进容器集群的管理工具,主流的有mesosphere的marathon、谷歌的Kubernetes、docker社区的swarm,目前成熟度最高的是...

    ffmpeg-vod-transcoder:带有Springboot和Docker的微服务,用于在云中对多种格式的单个视频文件进行转码

    ffmpeg-vod-transcoder 带有Springboot和Docker的微服务,用于在云中对多种格式的单个视频文件进行转码。手动运行转码作业 docker run --rm=true --volume=${HOME}/tmp/streamkit:/tmp/streamkit \ ddragosd/ffmpeg-...

    depcon:支持MesosMarathon和Compose的Docker蓝绿色部署管理

    Depcon的一些关键功能包括: 部署描述符中的变量插值以Column,YAML和JSON格式输出结果,以便与自动化轻松集成接受JSON或YAML格式的部署描述符全面的Mesos / Marathon支持应用程序,组和任务管理部分应用程序更新:...

    ducktape:系统集成和性能测试

    分布式系统集成和性能测试库概述Ducktape包含用于运行系统集成和性能测试的工具。 它提供以下功能: 默认情况下是隔离的,因此系统测试尽可能可靠。 在不同环境中的群集中(例如本地,自定义群集,Vagrant,K8s,...

    rancher-mesos-executor:rancher-mesos框架的执行者

    该存储库包含用于将rancher与mesos集成的apache mesos框架的执行程序。 执行程序将使用libvirt在Mesos-slave上启动新的VM,并在此新VM上安装docker,然后在rancher中注册它。 由mesos选择要运行的从站。 Rancher为...

    Singularity:用于运行 Mesos 任务的调度程序(HTTP API 和 webapp)——长时间运行的进程、一次性任务和计划作业。 #hubspot-开源

    最新发布版本: ... 如果您想尝试一下 Singularity,您可以安装docker和docker-compose来运行我们的示例集群。 首先运行docker-compose pull以获取所有需要的图像。 注意:这可能需要几分钟 然后只需运行dock

    2017中国系统架构师大会PPT资料集合.zip

    基于Mesos/Docker的Elasticsearch容器化私有云 小米生态云的应用引擎实践 Event Sourcing & CQRS architecting a cloud based micro-service system 分布式存储与离线混布弹性计算平台 机器学习与未知样本检测——...

    微服务架构软件的持续集成与交付

    这里我将以具体实践为例,讨论微服务架构的一些经验心得,然后着重介绍如何利用Docker,Jenkins来解决一些具体问题,实现微服务软件的持续交付。首先介绍下微服务架构的优势与劣势。相较于单体应用来说,微服务架构...

    rhythm:基于时间的Apache Mesos作业调度程序

    韵律 特征支持和容器化器与集成以进行秘密管理由或LDAP支持的访问控制列表(ACL)与集成以进行错误跟踪命令行客户端()支持Linux和OSX工作的生命周期job-要执行的定期操作(例如数据库备份)。任务-单次运行(实例...

    2016全球运维大会•深圳站

    5>钟储建-中国移动浙江公司Mesos生产实践。 【3月25日运维自动化专场】1>甘晖-测试部门通过持续集成的破局之路;2>黎明-自动化运维从0到1到N的演进与实践;3>肖澍-面向应用性能的业务级运维自动化平台;4>张冠宇-...

    ecosystem:TensorFlow与其他开源框架的集成

    Docker映像和K8s模板 用于在Kubernetes上运行分布式TensorFlow的模板。 部署在Mesos上的使用Marathon运行分布式TensorFlow的模板。 -Hadoop MapReduce和Spark的TFRecord文件InputFormat / OutputFormat。 -Spark...

    flocker-install-scripts:CentOS 7 上 Flocker 的非官方安装脚本

    在 ClusterHQ,我们一直致力于通过即将推出的 Docker 插件项目将 Flocker 的卷管理功能与 Swarm 和 Kubernetes(即将推出 Mesos/Marathon)等常见编排框架集成。 但是,Flocker 的某些功能并不容易集成到这些框架中...

    目录:与Vault和Marathon的友好机密集成

    目录轻松与Vault和Marathon集成秘密。建立go build && docker build --no-cache -t catalog:0.9 .用法假设您正在运行vault运行目录服务: docker run -it \ -e VAULT_ADDR="$VAULT_ADDR" \ -e VAULT_TOKEN="$VAULT_...

Global site tag (gtag.js) - Google Analytics