如何将Docker卷用作Mesos / Marathon的持久卷?

我正在运行Ceph RBD Docker volume plugin的CoreOS上运行Mesos和Ceph集群,但是我还不清楚如何将其与Mesos / Marathon一起使用…为单个Docker容器创建/使用rbd卷可以正常工作.

我找不到任何文章/博客文章/有关通过马拉松自动创建这些卷(以及在Mesos奴隶之间进行“任务迁移”的情况下重新映射)的内容.对我来说特别重要的是,当每个实例需要有自己的卷时(例如MongoDB ReplicaSet on Mesos/Marathon),如何运行有状态服务的多个实例.

我知道Mesos persistent volume docs,也看到了Marathon issue,但是我仍然很困惑如何或何时使用它…

关于SO还有其他问题:

> How to use volumes-from in marathon
> Docker on Mesos: Volume is placed on which node?
> Docker volume plugin marathon

不幸的是,这实际上并没有解决这个特定问题的答案.

RexRay的EMC Code示例还仅涵盖了一个单实例示例,我也可以使用上面提到的卷插件轻松处理该示例:

{
    "id": "Nginx","container": {
        "docker": {
            "image": "million12/Nginx","network": "BRIDGE","portMappings": [{
                "containerPort": 80,"hostPort": 0,"protocol": "tcp"
            }],"parameters": [{
                "key": "volume-driver","value": "rbd"
            },{
                "key": "volume","value": "Nginx-data:/data/www"
            }]
        }
    },"cpus": 0.2,"mem": 32.0,"instances": 1
}

在这种情况下,将自动创建Nginx数据卷.但是,如果我想使用永久卷和多个实例怎么办?

最佳答案
这是Flocker打算解决的用例. (免责声明:我是ClusterHQ的CTO).有关Flocker< =>的演示,请参见this blog post. Mesos / Marathon交互,它显示了Flocker Control Service如何充当“真相源”,对于该容器,它们在群集设置中存在.然后,Flocker将按需创建,然后在引用这些卷的容器在集群中移动时协调主机之间的映射和取消映射这些卷.

Flocker通过提供卷名称的整个群集范围的命名空间来实现此目的,然后可通过Flocker插件将这些名称用于带有Marathon的Docker,以为Mesos群集中的有状态容器提供可移植性和高可用性.

Flocker也有一个Ceph驱动程序:

> Google“ Flocker Ceph驱动程序”

并适用于CoreOS:

> Google“ CoreOS演示上的Flocker”

您可以通过为每个容器指定自己的卷名(例如mongo_1,mongo_2等)来运行多实例作业(例如具有副本集的MongoDB).

将这些部分放在一起并非易事,但我很乐意提供帮助.如果愿意,我可以为您的堆栈(Ceph CoreOS Docker Mesos Marathon)写一份详细的指南.

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...