我用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
}我将非常感谢任何形式的帮助:-)
发布于 2015-08-13 15:56:11
据我所知: docker --volume-from获取容器的ID或名称。
由于您datacontainer也是通过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" }
]因为这个docker-ID在Marathon中是未知的,所以使用从Marathon开始的datacontainer是不实际的。
您可以尝试使用Docker直接启动一个数据容器(不使用马拉松),并像以前一样使用它,但由于您事先不知道web-ubuntu将被安排在哪里(除非您添加一个约束来强制执行),所以这是不实际的。
发布于 2015-03-17 00:24:28
{
"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-09-09 02:09:48
Mesos支持使用key和value传递音量插件的参数。但问题是如何传递卷名,Mesos希望它是绝对路径,或者如果没有传递绝对路径,那么它将合并从属容器沙箱文件夹提供的名称。它们这样做主要是为了支持检查点,以防slave意外宕机。
在上面得到增强之前,唯一的选择是使用另一个键值对参数。例如,在上述情况下
{ "key":"volumes-from","value":"databox“},{ "key":"volume","value":"datebox_volume”}
我已经用一个插件测试了上面的插件,它是有效的。
https://stackoverflow.com/questions/29065246
复制相似问题