10

我正在使用 mesos + marathon + docker 很长一段时间,但我在某个时候卡住了。目前我尝试处理持久化容器,并尝试使用“volumes-from”参数,但我无法使其工作,因为我不知道如何找出要放置的数据框的名称它作为json中的键。我用这里的例子试过了

    {
    "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
}

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

4

4 回答 4

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 启动的数据容器是不切实际的。

您可以尝试直接使用 Docker 启动数据容器(不使用 Marathon)并像以前一样使用它,但由于您事先不知道web-ubuntu将在哪里安排(除非您添加约束来强制它),所以这是不切实际的。

于 2015-08-13T07:56:11.430 回答
0

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

可能是这样的吗?

于 2015-03-16T16:24:27.540 回答
0

Mesos 支持使用 "key" & "value" 传递卷插件的参数。但问题是如何传递 Mesos 期望为绝对路径的卷名,或者如果未传递绝对路径,那么它将合并从容器沙箱文件夹提供的名称。他们这样做主要是为了支持检查点,以防奴隶意外停机。

在上述得到增强之前,唯一的选择是使用另一个键值对参数。例如在上述情况下

{ "key": "volumes-from", "value": "databox" }, { "key": "volume", "value": "datebox_volume" }

我已经用插件在上面进行了测试,它可以工作。

于 2015-09-08T18:09:48.297 回答
-1

另一种方法是编写一个能够运行您想要的 docker 命令的自定义 mesos 框架。为了了解要接受哪些提议以及将每个任务放置在何处,您可以使用以下来源的马拉松信息:/apps/v2/(在任务键下)。

编写新的 mesos 框架的一个很好的起点是:https ://github.com/mesosphere/RENDLER

于 2017-04-21T19:42:39.320 回答