docker上的马拉松容器没有完成

我有Mesos群集由3个CentOS6.5机器组成。

ZooKeeper和Mesos-Master在其中一台机器上运行,Mesos-Slave在每台机器上运行。

而且,Marathon正在主节点上运行。

然后,我试图在Marathon上运行Docker容器,遵循Mesosphere的这个指令 。

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容器处于“Deploying”状态。

而在Mesos-Masternetworking用户界面上,我可以看到这个Task长时间处于“STAGING”状态。

在沙箱窗格上,我可以看到标准输出,命令似乎完成了成功。 没问题。

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 

stdout是这样的,

 Registered executor on master-hostname 10:19:49 

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

谢谢。

任务将完成(您应该能够看到Mesos完成的任务),但容器将由Marathon重新启动。 马拉松是为长期运行的应用程序。

如果你不希望你的应用程序连续运行,你应该看看Chronos这样的另一个框架。

马拉松是长时间运行的过程。 即使你删除容器,马拉松将尝试重新启动这些。 我观察到的另一件事是马拉松试图启动容器,并继续这样做,直到你没有内存和CPU。 当你没有资源时,你的任务将进入阶段状态。