我正在与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
的调度位置(除非您添加强制约束它),因此不切实际。