如果你还没有使用过的Docker,你一定要试一试。纯粹的功能和质朴的用户体验将让你感到惊奇。在这篇文章中,我将告诉你如何通过Docker Compose
来设置一个单节点的Mesos。(译者注:Mesos集群官网)
Docker在2月26日发布了Compose
(译者注:Docker-Compose官方文档)。Compose
允许你使用一个Docker-Compose
实现多容器安装和管理。使用Compose
管理的容器会通过一个YAML
文件来进行定义,十分容易阅读和编写,其用户体验和Docker CLI
非常相似。
在Compose
刚发布时,我试着使用了一下,有点让人失望,因为它基本上是一个翻版的Fig
。对于Docker公司来说这并不意外,为了夺取Orchard旗下Fig
的市场。但我期待更多的附加功能,乃至更紧密集成的Docker
的客户端(一些dev 分支实际上提供了原型),即使只是一个普通的发行版而不是一个单独的程序。我相信这一切都会实现。
当我写 《docker cookbook》 时,我已经试着使用20种不同的方式部署WordPress
,不得不承认这确实有点无聊! 我开始寻找更多的关于Mesos
的信息,然后我发现Docker
已经实现了对其的支持,我重读了一篇很棒的博客,展示关于如何通过七条指令来实现一个Mesos
的安装(zookeeper, master, slave, marathon framework)【译者注:原文链接,翻译参考】。我认输!
当我重新阅读这篇文章是,我下意识地认为这是Docker-Compose
一个令人激动的用例。使用一个YAML
文件来启动Mesos/Zookeeper/Marathon
并进行实验。当然,我不是在介绍一个多节点的设置。仅仅只是简单的进行一个Mesos
的实验。
我会略过compose
安装的细节,Docker
的文档已经足够完美了。
下面就是YAML
文件的所描述的Mesos
设置:
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
Recreating vagrant_zookeeper_1...
Recreating vagrant_mesosmaster_1...
Recreating vagrant_marathon_1...
Recreating vagrant_mesosslave_1...
打开你的浏览器,输入 http://IP_HOST:5050
然后按照博客内容剩下的内容在marathon
中添加一个任务。
最后,我将'7条指令设置Mesos
'变成了'1条指令设置Mesos
',这都归功于Docker-compose
和简便的YAML
文档。试着喜欢上这种用法。当Compose
能通过Docker
实现Docker Swarm
的机器启动,那么真正有趣的部分就开始了。