用一个命令使用 Docker Compose 安装Mesos
如果你还没有尝试 Docker,你应该现在试试了。它能提供的功能和简单的用户体验只会令你惊叹。在这篇文章中,我将向您展示如何使用 Docker Compose 构建单节点的 Mesos 系统。
Docker 在 2015 年 2 月 26 日发布了 Compose。Compose 允许您编写一个多容器的配置文件,然后用一个二进制文件 docker-compose 来管理它。由 Compose 管理的容器和容量组合是在 YAML 文件中定义的,它超级容易阅读且超级容易编写。整个用户体验与 Docker 的命令行环境非常相似。
当 Compose 发布时,我尝试了一下,但是并没有给我留下太深刻的印象。它看起来基本上只是 fig 的重新实现。这并不意外,因为 Docker 公司收购了 fig 的制作者 Orchard。我期待 Compose 能提供更多的附加功能,甚至与 Docker 客户端有更紧密的整合(开发分支已经提出了一些原型)。甚至是一个正常的发行,而不是仅仅提供一个二进制文件。
在写 Docker Cookbook 的时候,我已经用 20 种不同的方式部署了 WordPress,这其实有点无聊。当我寻找更多关于 Mesos 及其对 Docker 的支持的时候,我阅读了一篇很棒的博客文章。它展示了如何使用 7 条命令来启动一个 Mesos 实例(包括 ZooKeepr, Meso Master, Marathon, Mesos Slave 这几个容器)。
当我重新阅读这篇文章时,我突然发现这是一个令人兴奋的 docker-compose 用例。只需要一个 YAML 文件就可以启动 Mesos、Zookeeper、Marathon 来进行测试。当然,这并不是一个生产环境上的多节点安装,我只是在寻找一个简单的 Mesos 实验。
这里我会省略安装 Docker Compose 的细节(事实上只需要使用 curl 下载)。Docker 有关于安装的文档。
这里是描述我们的 Mesos 安装的 YAML 文件:
zookeeper:
image: garland/zookeeper
ports:
- "2181:2181"
- "2888:2888"
- "3888:3888"
mesosmaster:
image: garland/mesosphere-docker-mesos-master
ports:
- "5050:5050"
links:
- zookeeper:zk
environment:
- MESOS_ZK=zk://zk:2181/mesos
- MESOS_LOG_DIR=/var/log/mesos
- MESOS_QUORUM=1
- MESOS_REGISTRY=in_memory
- MESOS_WORK_DIR=/var/lib/mesos
marathon:
image: garland/mesosphere-docker-marathon
links:
- zookeeper:zk
- mesosmaster:master
command: --master zk://zk:2181/mesos --zk zk://zk:2181/marathon
ports:
- "8080:8080"
mesosslave:
image: garland/mesosphere-docker-mesos-master:latest
ports:
- "5051:5051"
links:
- zookeeper:zk
- mesosmaster:master
entrypoint: mesos-slave
environment:
- MESOS_HOSTNAME=192.168.33.10
- MESOS_MASTER=zk://zk:2181/mesos
- MESOS_LOG_DIR=/var/log/mesos
- MESOS_LOGGING_LEVEL=INFO
然后这样运行它:
$ ./docker-compose up -d # 守护模式运行 Docker 容器
Recreating vagrant_zookeeper_1...
Recreating vagrant_mesosmaster_1...
Recreating vagrant_marathon_1...
Recreating vagrant_mesosslave_1...
接下来,打开你的浏览器并访问 http://IP地址:5050,然后根据这篇博客来在 Marathon 中开始一个新的任务。
有了 Docker Compose 和它所使用的 YAML 语法,我成功的从“7 条命令安装 Mesos” 到了 “1 条命令安装 Mesos”。我很喜欢这种感觉。什么时候 Compose 可以和 Docker Swarm 相结合,那就有得好玩了,
- 千万级规模高性能、高并发的网络架构经验分享
- UE4新手之编程指南
- redis 学习笔记(5)-Spring与Jedis的集成
- Linq to SQL 查询Tips
- SQLite 预写式日志
- java调用.net asmx / wcf
- mybatis3.2.8 与 hibernate4.3.6 混用
- mybatis的物理分页:mybatis-paginator
- 使用 WMI 进行诊断WCF
- java:快速文件分割及合并
- 暴涨210倍的一个数字货币正悄无声息崛起
- QT Creator 快速入门教程 读书笔记(一)
- .NET程序优化(GCServer )
- redis 学习笔记(4)-HA高可用方案Sentinel配置
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 突击并发编程JUC系列-阻塞队列 BlockingQueue
- Matlab建立SVM,KNN和朴素贝叶斯模型分类绘制ROC曲线
- Python安装TensorFlow 2、tf.keras和深度学习模型的定义
- TensorFlow2 keras深度学习:MLP,CNN,RNN
- Flutter ListView 局部刷新数据、ListView点赞收藏
- R语言公交地铁路线网络图实现数据挖掘实战
- R语言风险价值VaR(Value at Risk)和损失期望值ES(Expected shortfall)的估计
- R语言机器学习实战之多项式回归
- 5000字!带你零距离接触websocket!
- 使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用
- 玩转StyleGAN2模型:教你生成动漫人物
- R语言时间序列数据指数平滑法分析交互式动态可视化
- 再见Excel!最强国产开源在线表格Luckysheet走红GitHub
- R语言广义线性模型索赔频率预测:过度分散、风险暴露数和树状图可视化
- R语言多分类logistic逻辑回归模型在混合分布模拟单个风险损失值评估的应用