我和mesos + marathon + docker工作了很长一段时间但我在某个时候陷入困境。目前我尝试处理持久性容器,并尝试使用" volume-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
}
我真的很感激任何帮助: - )
答案 0 :(得分:1)
据我所知:
docker set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system public/ckeditor_assets}
获取容器的ID或名称。
由于您的datacontainer也是使用Marathon启动的,它会获得一个ID(不是如何从马拉松中获取此ID)以及该表单的名称:--volume-from
与Mesos中的任务ID无关,也不与docker相关ID。
解决方案是为您的web-ubuntu应用程序编写类似的内容:
mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4
由于Marathon不知道这个docker-ID,因此使用以Marathon启动的datacontainer是不切实际的。
您可以尝试直接使用Docker启动datacontainer(不使用Marathon)并像以前一样使用它,但因为您事先不知道将"parameters": [
{ "key": "volumes-from", "value": "mesos-0fb2e432-7330-4bfe-bbce-4f77cf382bb4" }
]
安排在哪里(除非您添加约束强迫它)这是不切实际的。
答案 1 :(得分: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
}

这样的事可能吗?
答案 2 :(得分:0)
Mesos支持使用" key"传递卷插件的参数。 &安培; "值&#34 ;.但问题是如何传递Mesos期望为绝对路径的卷名,或者如果未传递绝对路径,则它将合并随从容器沙箱文件夹提供的名称。他们这样做主要是为了支持检查点,以防奴隶意外停机。
在上述增强之前,唯一的选择是使用另一个键值对参数。对于例如在上面的案例中
{" key":" volume-from"," value":" databox" }, {" key":" volume"," value":" datebox_volume" }
我已经使用插件进行了上述测试,但它确实有效。
答案 3 :(得分:-1)
另一种方法是编写一个能够运行所需docker命令的自定义mesos框架。为了知道接受哪些要约以及在哪里放置每项任务,您可以使用以下马拉松信息:/ apps / v2 /(在任务键下)。
编写新的mesos框架的一个很好的起点是:https://github.com/mesosphere/RENDLER