1. 程式人生 > >Mesos和Docker的整合

Mesos和Docker的整合

  因為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框架構建分散式應用》,點此連結可在博文視點官網檢視此書。
                    圖片描述

  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                       圖片描述

相關推薦

MesosDocker整合

  因為Docker本身想管理整個容器,從chroot、名稱空間到整個名稱空間的cgroup,它會和預設的Mesos容器發生衝突。因此,Mesos添加了容器機的支援,一種可插拔的機制,讓Mesos的容器機子系統可擴充套件:最初Mesos的基於 LXC/cgroup的容器被引入到容器機API裡,Docker

Docker系列之九:Docker用於持續整合,構建JenkinsDocker伺服器

系列連結 Docker系列之一:Docker介紹及在Ubuntu上安裝 Docker系列之二:Docker 入門 Docker系列之三:使用Docker映象和倉庫 Docker系列之四:Dockerfile的使用 Docker系列之五:Volume 卷的使用——以Redis為例

springmvcjson整合配置方法

repl bin blank converter htm spring配置 tpm port 三方 配置方法一 1、導入第三方的jackson包,jackson-mapper-asl-1.9.7.jar和jackson-core-asl-1.9.7.jar。 2、spri

(十七)Hibnernate Spring 整合

blob ns-3 管理 comm wire support Coding jar包 jdbc 一、Hibnernate 和 Spring結合方案: 方案一: 框架各自使用自己的配置文件,Spring中加載Hibernate的配置文件。 方案二: 統一由Spri

SpringMvcMybatis整合總結

web images bean 技術 數據庫 tro control 自己 alt 1.先配置mybatis,測試讀取數據庫 2.自己測試數據 3.配置spring和springmvc, PS:配置web.xml,這樣就不用getBean了 4.配置Controlle

Spring+SpringMVC+MyBatis深入學習及搭建(十四)——SpringMVCMyBatis整合

文件拷貝 conf lips glib ide doc from ive body 轉載請註明出處:http://www.cnblogs.com/Joanna-Yan/p/7010363.html 前面講到:Spring+SpringMVC+MyBatis深入學習及搭建(

深入淺出JMS(四)--SpringActiveMQ整合的完整實例

訂閱 實例 schema -i 同步和異步 生產 技術分享 .com factor 第一篇博文深入淺出JMS(一)–JMS基本概念,我們介紹了JMS的兩種消息模型:點對點和發布訂閱模型,以及消息被消費的兩個方式:同步和異步,JMS編程模型的對象,最後說了JMS的優點。 第二

JenkinsDocker

docker命令 插件 doc 解決 命令 構建 調用 安裝 導致 由於采用了Docker版的Jenkins,導致在Jenkins裏無法調用Docker命令行工具進行Docker鏡像構建 有三種解決方案: 1. 安裝Docker插件,利用Jenkins插件進行構建 2.

MesosMarathon

不知道 lead zlib source all figure probably profile 需要 libz is required for mesos to build 需要安裝zlib-devel-1.2.7-17.el7.x86_64.rpm 其實跨Shell

SpringActiveMQ整合的完整實例

beans util caching consumer str blank prop ner 消息發送 Spring和ActiveMQ整合的完整實例 前言 這篇博文,我們基於Spring+JMS+ActiveMQ+Tomcat,做一個Spring4.1.0和Acti

【轉】Spark StreamingKafka整合開發指南

thread ada 關系 方法 拷貝 理解 1.2 reduce arr 基於Receivers的方法 這個方法使用了Receivers來接收數據。Receivers的實現使用到Kafka高層次的消費者API。對於所有的Receivers,接收到的數據將會保存在Spark

Swagger2springMVC整合測試

inter encoding src mybatis project constrain aop servle efault 對Swagger寫個獨立的工程測試,方便後續進行工程的整合,這裏做一下記錄 1.pom.xml--依賴的的包 1 <project xm

Zeppelin 學習筆記之 Zeppelin安裝elasticsearch整合

XML exp ado 8.0 elk mage search tor 選擇 Zeppelin安裝: Apache Zeppelin提供了web版的類似ipython的notebook,用於做數據分析和可視化。背後可以接入不同的數據處理引擎,包括spark, hive,

Springmybatis整合 org.mybatis.spring.mapper.MapperScannerConfigurer

註冊 rop repo html itl tar hive mybatis property 在springmvc與mybatis整合時,需要對每一個mapper定義對應的一個MapperFactoryBean,可以使用MapperScannerConfigurer自動掃描

Spring Mybatis 整合

inter 映射文件 rem sna import enc -m lap sql 首先我們創建一個Java Project,名稱任意,然後導入所需要包:spring3.1.1, mybatis-3.1.1.jar, mysql-connector-java-5.1.2-be

SpringMvc基礎知識(二) springmvcmybatis整合

internal 前端控制器 客戶 報錯 tca json轉換 註入 配置 iso 1 springmvc和mybatis整合 1.1 需求 使用springmvc和mybatis完成商品列表查詢。 1.2 整合思路 springmvc+mybaits的系統

一次flannelDocker網絡不通定位問題

查看路由表 raw ack 運行 本機 output 通過 機器 路由 查看路由表的配置 路由表情況 [root@k8s-master ~]# route -n Kernel IP routing table Destination Gateway

django的部署以及docker 的集成

logs txt 沒有 build 目錄 buffered .html 註意 uil 開發環境:ubuntu14 python3 首先安裝docker,docker-compose 如果不懂,詳見 DOCKER官網 接下來安裝django 通過pip安裝 s

dockerdocker compose常用操作命令

clas _id 命名空間 down gpo 本地 export 啟動 pru 首先區分一下docker中幾個概念 Image:鏡像,相當於一個root文件系統,不包含任何動態數據 Container:容器,鏡像運行時的實體,實質是進程,容器進程運行於屬於自己的獨立的命名空

ThinkPHPWorkerman整合實現Socket通信Demo(轉載)

了吧 orm 忽略 demo 模式 end ip地址 支持 安全 轉自: https://www.jianshu.com/p/668ac301f9ca 因為最近有個項目涉及到Socket通信,於是自己嘗試了一下搭建一個服務端WebSocket通信的項目,寫個筆記,能幫助到