使用 Docker Compose 通过一条命令设置 Mesos

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / Java 学习路线 / 一对一提问 / 学习打卡/ 赠书活动

目前,正在 星球 内带小伙伴们做第一个项目:全栈前后端分离博客项目,采用技术栈 Spring Boot + Mybatis Plus + Vue 3.x + Vite 4手把手,前端 + 后端全栈开发,从 0 到 1 讲解每个功能点开发步骤,1v1 答疑,陪伴式直到项目上线,目前已更新了 204 小节,累计 32w+ 字,讲解图:1416 张,还在持续爆肝中,后续还会上新更多项目,目标是将 Java 领域典型的项目都整上,如秒杀系统、在线商城、IM 即时通讯、权限管理等等,已有 870+ 小伙伴加入,欢迎点击围观

如果您还没有尝试过 Docker,您应该尝试一下。它赋予您的强大力量和简单的用户体验会让您赞叹不已。在本文中,我将向您展示如何使用 Docker compose 启动单节点 Mesos 设置。

Docker 在 2 月 26 日宣布了 compose 。 Compose 允许您描述多容器设置并使用一个二进制 docker-compose 对其进行管理。 Compose 管理的容器和卷组合定义在一个 YAML 文件中,超级易读和超级易写。 UX 与 Docker CLI 非常相似。

当 compose 发布时,我尝试了一下,但有点不知所措,因为它基本上是对 Fig 的重新审视。这并不意外,因为 Docker Inc 收购了 Fig 的制造商 Orchard。但我期待更多的附加功能,甚至与 Docker 客户端更紧密的集成( 开发分支 实际上是原型),甚至是一个通用版本而不是单独的二进制文件。我相信这会到来。

当我写 docker cookbook 时,我已经部署了 20 种不同的 Wordpress 方式,而且有点无聊!我正在寻找有关 Mesos 及其对 Docker 支持的更多信息,我重新阅读了一篇很棒的 博客 文章,其中展示了如何在 7 个命令中启动 Mesos 设置(zookeeper、master、slave、marathon 框架)。不能打败那个。

当我重新阅读这篇文章时,我不由自主地认为这是 docker-compose 的一个令人兴奋的用例。一个 YAML 文件,用于启动 Mesos/Zookeeper/Marathon 并进行试验。当然,我不是在谈论生产多节点设置。我只是为了一个简单的 Mesos 实验而查看它。

我将为您省去安装 compose 的细节(只需卷曲即可)。码头工人的文档 很棒

所以这是描述我们的 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

启动这个:


 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

并在 http://IP_HOST:5050 打开浏览器,然后按照 博客 的其余部分开始马拉松任务。

归根结底,由于 Docker-compose 和一个相当简单的 YAML 文件,我从“7 个命令到 Mesos”变成了“1 个命令到 Mesos”。必须爱上它。当 compose 可以在 由 Machine 启动的 Docker Swarm 中跨 Docker 主机执行此操作时。然后真正的乐趣将开始!