我正在与Mesos + Marathon + Docker一起工作了一段时间,但有时还是遇到了麻烦。目前,我尝试处理持久性容器,并尝试使用“volumes-from”参数,但由于无法识别如何确定要放入的数据框的名称,因此无法正常工作它作为json中的键。我尝试了here中的示例

    {
    "id": "privileged-job",
    "container": {
        "docker": {
            "image": "mesosphere/inky"
            "privileged": true,
            "parameters": [
                { "key": "hostname", "value": "a.corp.org" },
                { "key": "volumes-from", "value": "another-container" },
                { "key": "lxc-conf", "value": "..." }
            ]
        },
        "type": "DOCKER",
        "volumes": []
    },
    "args": ["hello"],
    "cpus": 0.2,
    "mem": 32.0,
    "instances": 1
}

我真的很感谢任何帮助:-)

最佳答案

据我所知:
docker --volume-from采用容器的ID或名称。

由于您的数据容器也是与Marathon一起启动的,因此它会获得一个ID(而不是如何从Marathon中获取此ID)和该形式的名称:mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4,与Mesos中的任务ID或Docker ID不相关。

解决方案是为您的web-ubuntu应用程序编写如下代码:

"parameters": [
    { "key": "volumes-from", "value": "mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4" }
]

由于Marathon未知此docker-ID,因此使用以Marathon开头的datacontainer不切实际。

您可以尝试直接使用Docker启动数据容器(不使用Marathon),并像以前一样使用它,但是由于您事先不知道web-ubuntu的调度位置(除非您添加强制约束它),因此不切实际。

08-28 10:08