马拉松Docker任务失败

我在两台机器上安装了Marathon和Mesos。 我可以成功地从马拉松的Web控制台安排命令,但是当我尝试安排一个涉及docker图像的工作时,我立即就失败了。 另外我没有得到stderr或stdout文件。

示例运行常规命令:

Marathon job conf: { "id": "testecho", "cmd": "echo hello; sleep 10", "cpus": 1, "mem": 128, "disk": 0, "instances": 1 } 

在我看来,任务已经成功。 我有正常的stderr和stdout文件。

简单的命令工作成功

但是现在如果我运行一个简单的docker镜像任务:

 Marathon job conf: { "id": "/ubuntu", "cmd": "date -u +%T", "cpus": 0.5, "mem": 512, "disk": 0, "instances": 1, "container": { "type": "DOCKER", "volumes": [], "docker": { "image": "libmesos/ubuntu", "network": null, "portMappings": null, "privileged": false, "parameters": [], "forcePullImage": false } }, "portDefinitions": [ { "port": 10001, "protocol": "tcp", "labels": {} } ] } 

我看到它瞬间失败了:

码头工人失败

我没有stderr或stdout文件:

没有stderr或stdout文件

我也注意到,在我的两台机器上,当我运行时:

 docker ps -a 

我在两台机器上都看不到任何东西。 所以这意味着docker工作甚至没有启动

什么可能影响docker部署?

我能想到的一个原因是,马拉松用来启动任务的用户无法访问泊坞窗吗? 我如何testing这个?

我注意到,当我运行命令:

 sudo cat /etc/passwd 

我看到一个用户动物园pipe理员。 也许这是没有访问docker的用户?

但是,当我这样做:

  su zookeeper 

我不会更改用户configuration文件

阅读了几个教程后,我find了以下教程的答案: http : //frankhinek.com/deploy-docker-containers-on-mesos-0-20/

我必须在我的mesos-slave上启用Docker Containerizer

  1. 设置–containerizers = docker,mesos“命令行参数:

     echo "docker,mesos" | sudo tee /etc/mesos-slave/containerizers 
  2. 增加执行器超时到5分钟1 :(我猜这是可选的)

     echo "5mins" | sudo tee /etc/mesos-slave/executor_registration_timeout 
  3. 重新启动Mesos Slave:

     sudo service mesos-slave restart