首先明确一件事情:
你想让docker容器变成持续运行的,必须执行一个命令让它hang在那里,比如你用到的ping,或者tail -f,或者nginx的非daemon(nginx-g daemon off;)方式。
所以这个根本不是Marathon的问题,而是你没有用明白Docker,抛开Marathon,你本地执行docker run centos sleep 50过50秒也自动退出容器。
你应该先找到让你的容器hang在那里的方式,再去发布到Marathon上。
不会写的话可以参考官方的镜像学习,比如nginx(重点是CMD里的那个-g daemon off;)
其次,Marathon分不太清楚你是怎么退出的:
底层的Mesos会启动一个shell,执行docker wait XXXX判断容器是否退出,所以这块你要注意,不要用exit code一类作为正常/异常退出的条件,Mesos根本不关心这个,只要不是它自己kill的,都认为是出问题了,并通知Marathon做二次调度,结果就是你看到的那一堆Exit的容器了。