摘要: 众所周知,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的集成相关推荐

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

    11月18日,北京数人云COO谢乐冰老师在DBA+社群中间件用户组进行了一次主题为"以Mesos和Docker为核心的云操作系统"的线上分享.小编特别整理出其中精华内容,供大家学习 ...

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

    [摘要]虽然 Docker 和 Mesos 已成为不折不扣的 Buzzwords ,但是对于大部分人来说它们仍然是陌生的,下面我们就一起领略 Mesos .Docker 和 Go 配合带来的强大破坏力 ...

  3. 如何使用Docker轻松集成OnlyOffice和NextCloud--快速搭建私有云办公系统/私有云盘/私有OfficeOnline

    原作者: XiaoGuo An 转载来源:https://www.linuxbabe.com/docker/onlyoffice-nextcloud-integration-docker 如何使用Do ...

  4. mesos+marathon+docker

    目录 Zookeeper Zookeeper安装配置 Zookeeper安装 Zookeeper配置 zookeeper启动 Mesos Mesos实现原理 Mesos 安装配置 Mesos 安装 M ...

  5. DNMP:基于docker搭建集成LNMP(nginx+mysql+php)

    有一天,主机商跑路了.迫于无奈之下,我需要进行数据迁移.原先用的主机我可以什么都不管,直接用就行.而现在,只有一个centos服务器.一切从零开始... 我曾试过一个一个安装,从docker入手,一步 ...

  6. docker —— 中间件集成

    文章目录 docker -- 中间件集成 装个Docker

  7. Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境

    本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...

  8. Springboot Gitlab Jenkins Maven Docker 持续集成/持续交付

    Gilab安装教程 http://blog.csdn.net/chenhaifeng2016/article/details/78603216 http://blog.csdn.net/chenhai ...

  9. Docker持续集成与容器管理--系列教程

    一 Docker简介 Docker介绍 Docker架构 二 Docker安装 Ubuntu Docker 安装 CentOS Docker 安装 Windows Docker 安装 MacOS Do ...

  10. java docker 持续集成_最佳实战Docker持续集成图文详解

    前言 关于Docker的文章铺天盖地,但精品文章往往翻译居多.都说Docker天生适合持续集成/持续部署,但同样,可落地.实际可操作性的文章也很罕见. 基于这些情况,虽然我们专栏定位为运维管理性文字, ...

最新文章

  1. jQuery.merge与concat的区别
  2. gradle 构建包含源码配置
  3. (八)限定某个目录禁止解析php、限制user_agent和PHP相关配置
  4. 华为服务器默认什么系统,云服务器默认系统
  5. Keras入门必读教程:手把手从安装到解决实际问题
  6. (转)hibernate-5.0.7+struts-2.3.24+spring-4.2.4三大框架整合
  7. SublimeText3.2.1的汉化方法(也适用于3)
  8. 移动端布局,C3新增属性
  9. 52. PHP 伪静态
  10. 陪学读书会——《定位》第十三章:品牌延伸何时有效
  11. VMware虚拟机安装Win10系统后出现蓝屏
  12. 大学如何自学计算机科学与技术?
  13. 计算机里什么文件无法删除,电脑里面有哪些不能删除的文件?
  14. Y430刷新BIOS
  15. 高等数学(第七版)同济大学 习题3-7 个人解答
  16. 网络安全究竟是什么?如何成为一位优秀的网络安全工程师?
  17. python 外星人入侵游戏 学习总结 以及完整代码
  18. V S自动关闭的问题
  19. python中定义元组的符号_python 3 基础之元组tuple,详解
  20. VB小游戏设计(一):扫雷

热门文章

  1. Today Take a Look at Nike's Valentine's Day Sneakers
  2. HBase的java操作,最新API。(查询指定行、列、插入数据等)
  3. 09程序员的修炼之道阅读笔记之三
  4. ubuntu安装mysql添加密码
  5. 如何自动生成和安装requirements.txt依赖
  6. (MathType)LaTeX风格公式样式
  7. Linux使用命令记录
  8. C++ json解析
  9. .NET/C# 优化心得
  10. 关于Cocos2d-x中实例伸缩后的位置设置