码头装卸槽

deimos的Python项目详细描述


Deimos是Mesos的Docker插件,提供外部容器化 在MESOS-816中描述。

安装

有关完整的安装演练,请参见this Gist

可以安装deimosfrom the Cheeseshop

pip install deimos

将参数传递给Docker

在mesos中,每一个成功的资源提供最终都会有一个 TaskInfo描述要完成的工作。在TaskInfo中是 CommandInfoCommandInfo中有一个ContainerInfo (在MESOS-816之后)。ContainerInfo结构允许规范 一个image URLcontainer选项的例如:

{container=ContainerInfo{image="docker:///ubuntu"options=["-c","10240"]}}

deimos通过剥离 前缀并使用余数作为图像名称。容器选项是 任务启动时传递给docker run。如果在 选项列表中,以下所有参数都将附加到 运行命令。这在使用定义了入口点的图像时非常有用。 例如:

{container=ContainerInfo{image="docker:///flynn/slugrunner"options=["//","start","web"]}}

如果任务中不存在ContainerInfo,则deimos仍将包含 它使用传递给从机的--default_container_image,或者 基于宿主的分布和发布的合理猜测。

Docker的一些选项,比如-H,并不只适用于docker run。 这些选项应该在deimos配置文件中设置。

DEIMOS识别指定端口、CPU和内存以及 将它们转换为适当的docker选项。

通过马拉松传递参数

marathon有一个rest api来提交json格式的请求以运行长时间运行的命令。

在这个json对象中,deimos使用以下键:

  • container一个嵌套对象,包含要运行的docker映像的详细信息
    • image运行哪个Docker映像,它可能有一个自定义注册表,但是 必须有版本标记
    • options要添加到Docker调用的额外选项列表
  • cmd在映像中使用Docker运行什么命令。德伊莫斯 自动将/bin/sh -c添加到前面
  • env要传递给docker映像的额外环境变量
  • cpus要给容器多少CPU共享,可以是小数, 乘以1024并加上docker run -c
  • mem要给容器多少内存,以兆字节为单位
curl -v -X POST http://mesos1.it.corp:8080/v2/apps \
        -H Content-Type:application/json -d '{
    "id": "marketing",
    "container": {
      "image": "docker:///registry.int/marketing:latest",
      "options": ["-v", "/srv:/srv"]
    },
    "cmd": "/webapp/script/start.sh",
    "env": {"VAR":"VALUE"},
    "cpus": 2,
    "mem": 768.0,
    "instances": 2
}'

这变成一个docker执行行,类似于:

docker run --sig-proxy --rm \
           --cidfile /tmp/deimos/mesos/10330424-95c2-4119-b2a5-df8e1d1eead9/cid \
           -w /tmp/mesos-sandbox \
           -v /tmp/deimos/mesos/10330424-95c2-4119-b2a5-df8e1d1eead9/fs:/tmp/mesos-sandbox \
           -v /srv:/srv -p 31014:3000 \
           -c 2048 -m 768m \
           -e PORT=31014 -e PORT0=31014 -e PORTS=31014 -e VAR=VALUE \
           registry.int/marketing:latest sh -c "/webapp/script/start.sh"

日志记录

当以交互方式运行时,deimos记录到控制台,当在 背景。可以在deimos配置中显式配置日志记录 文件。

配置

example.cfg中有一个示例配置文件,它记录了所有 配置选项。可能是 在生产中很重要的是:

  • [docker]:全局docker选项(--host
  • [log]:日志记录设置

按以下顺序搜索配置文件:

./deimos.cfg
~/.deimos
/etc/deimos.cfg
/usr/etc/deimos.cfg
/usr/local/etc/deimos.cfg

只加载一个配置文件(找到的第一个)看看是什么 deimos认为它的配置是,运行deimos config

州目录

deimos为每个容器创建一个状态目录,默认情况下 /tmp/deimos,它跟踪容器的状态、开始时间和pid。 为每个容器维护文件锁,以协调对 启动、停止和探测容器的装置。

< >清除属于已退出容器的状态目录,调用DEIMOS 如下所示:

deimos state --rm

此任务可以从cron以固定的间隔安全运行。未来, deimos不需要单独调用 常规操作。

配置mesos以使用deimos

只需要配置从机。设置这些选项:

--containerizer_path=/usr/local/bin/deimos --isolation=external

Mesos的打包版本还可以从文件中加载以下选项:

echo /usr/local/bin/deimos    >    /etc/mesos-slave/containerizer_path
echo external                 >    /etc/mesos-slave/isolation

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在Java中创建固定大小的泛型数组?   javascript Paypal Braintree订阅付款   使用BufferedReader和PrintWriter实现java数据持久化?   类似于iCloud的java唯一google id   java使用网格布局和抓取组合框   java我的while循环无限运行,当我检查它时,它说while循环没有主体,而我认为它显然没有主体   java LWJGL碰撞3D OpenGL   java将Tibco RV切换到WebSphere MQ?   java如何使用Postman从curl发布REST   java是超级的,在通用通配符中是独占的吗?   在swing 1.5中,java在指定时间后自动关闭非模态对话框   java PrimeFaces饼图在JSF 2.0中不显示   java如何在Spring MVC中提供带有xml配置的默认bean实现?   java在eclipse中使用按钮关闭JFrame   java Sqoop jar已弃用   Java中的Getter方法