`

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

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

分享到:
评论

相关推荐

    去哪儿网利用Mesos和Docker构建dev/beta环境

    去哪儿网使用Mesos和Docker构建开发(DEV)和测试(BETA)环境,这一过程涉及多个方面的知识点。下面是对这些知识点的详细梳理。 一、背景知识 去哪儿网在构建DEV/BETA环境时,面临了传统虚拟机环境的诸多问题,...

    领科云基于Mesos和Docker的企业级移动应用实践分享.zip

    2. **持续集成/持续部署(CI/CD)**:领科云可能利用了Docker与Mesos的结合,构建了一套自动化测试和部署流程,确保代码的快速迭代和稳定发布。 3. **网络策略和服务发现**:在Mesos和Docker环境下,服务间的通信...

    Monitoring Mesos, Docker, Containers with Zabbix

    假设我们有一个基于Mesos的集群,其中包含多个Docker容器和若干个应用程序框架(如Marathon和Chronos)。为了确保系统的稳定运行,我们可以采取以下监控策略: - **硬件监控**:通过Zabbix监控每个节点的CPU、内存...

    Marathon+Mesos+Zookeeper+Docker实战

    Apache Mesos通过维护轻量级的Master和高可用的Zookeeper集成,解决单点故障问题。MesosMaster和MesosSlave是其核心组件,分别管理各个Framework和Slave节点,以及执行具体的任务。Framework如Hadoop或Spark等可以...

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

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

    Mastering Mesos - Dipa Dubhashi

    4. **Mesos与Docker的结合**:Mesos与Docker的集成使得容器化应用的部署和管理更加便捷。Mesos可以自动发现和管理Docker容器,提供了一种可扩展且灵活的方式来运行微服务和分布式应用。 5. **Mesos Marathon**:...

    Mesos在教育课件云中的应用-黄凯.pdf

    2. Docker:Mesos可以与Docker集成,提供容器化和微服务编排功能。 3. Consul:Mesos可以与Consul集成,提供服务注册和发现功能。 4. Etcd:Mesos可以与Etcd集成,提供分布式键值存储功能。 Mesos可以为教育课件云...

    mesos运行测试结果分析

    ### Mesos运行测试结果分析 #### 一、测试概述与目的 本次测试旨在评估Mesos在不同...对于未来的研究方向,建议进一步探索如何优化Mesos与现有技术栈的集成,以及如何提高其在大规模分布式系统中的适用性和性能表现。

    Spring Microservices_Build Scalable Microservices with Spring,Docker, and Mesos

    本书《Spring Microservices: Build Scalable Microservices with Spring, Docker, and Mesos》深入探讨了如何使用Spring框架、Docker容器技术和Mesos集群管理系统来构建高效、可扩展的微服务架构。通过详细分析与...

    mesos-flocker-integrations:Flocker和Mesos之间的集成

    总的来说,【mesos-flocker-integrations】项目提供了一个实用的学习平台,帮助用户理解和实践在Mesos环境中如何有效集成和使用Flocker,以解决容器化应用的数据持久化问题。通过这个项目,你可以深入理解Mesos的...

    mesos-nc:一个用 Python 编写的用于 Docker 容器的简单而有指导意义的 Mesos 框架

    3. **Docker集成**:学习如何在Mesos框架中集成Docker,包括使用Docker容器运行时,定义Docker容器的资源需求,以及如何通过Mesos启动和管理Docker容器。 4. **Python编程**:熟悉Python的编程范式,如面向对象编程...

    Apache+Mesos+官方文档_1.01

    此外,由于 Mesos 支持 Docker 容器,因此它能够无缝集成现代微服务架构,提供强大的容器编排能力。 总之,Apache Mesos 是一种强大的资源管理平台,通过资源邀约机制和模块化架构实现了高效、灵活的资源调度。框架...

    docker_heapster.tar.gz,版本位canary,大小

    Heapster在与其他组件如Kubernetes或Mesos集成时,可能利用ZooKeeper来实现集群的同步和一致性。 “分布式”标签进一步强调了Heapster在处理大规模、跨节点的监控任务时的能力。在分布式系统中,Heapster可以收集并...

Global site tag (gtag.js) - Google Analytics