我的Mesos集群由3台CentOS6.5机器组成。

ZooKeeper和Mesos-Master在其中一台计算机上运行,​​而Mesos-Slave在每台计算机上运行。

另外,Marathon在主节点上运行。

然后,我尝试按照Mesosphere的this instruction在Marathon上运行docker容器。
job.json如下所示,

{
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "libmesos/ubuntu"
    }
  },
  "id": "ubuntu",
  "instances": 1,
  "cpus": 0.5,
  "mem": 512,
  "uris": [],
  "cmd": "date -u +%T"
}

然后我运行以下命令,
curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" <master-hostname>:8080/v2/apps -d@job.json

然后在Marathon Web UI上,即使经过很长时间,我仍可以看到Docker容器处于“正在部署”状态。

在Mesos-Master Web UI上,我可以看到任务经过很长时间后处于“STAGING”状态。

在“沙箱” Pane 中,我可以看到标准输出,并且该命令似乎已成功完成飞行。没问题。

stderr就是这样,
I0416 19:19:49.254998 29178 exec.cpp:132] Version: 0.22.0
I0416 19:19:49.257824 29193 exec.cpp:206] Executor registered on slave 20150416-160950-109643786-5050-30728-S0

标准输出就是这样,
Registered executor on master-hostname
10:19:49

但我希望容器(TASK)在完成命令后完成。
有可能吗?
如果可能,该怎么做?

谢谢。

最佳答案

任务将完成(您应该能够在Mesos中看到已完成的任务),但是容器将由Marathon重新启动。 Marathon适用于长期运行的应用程序。

如果您不希望您的应用程序连续运行,则应该看看另一个类似Chronos的框架。

关于docker - Marathon上的Docker容器未完成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29672152/

10-16 09:54