我在我的两台机器上安装了Marathon和Mesos。 我可以成功地从马拉松Web控制台安排命令,但是当我尝试安排涉及docker镜像的作业时,我立即失败了。另外,我没有stderr或stdout文件。
示例运行正常命令:
Marathon job conf:
{
"id": "testecho",
"cmd": "echo hello; sleep 10",
"cpus": 1,
"mem": 128,
"disk": 0,
"instances": 1
}
在Mesos上,我看到任务已经成功。我有正常的stderr和stdout文件。
但是现在如果我运行一个简单的泊坞窗图像任务:
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": {}
}
]
}
在Mesos上,我看到它立即失败了:
我没有stderr或stdout文件:
我也注意到在我的两台机器上运行时:
docker ps -a
我在两台机器上都看不到任何东西。这意味着码头工作甚至没有启动
什么可能影响docker部署?
我能想到的一个原因是马拉松用来启动任务的用户无法访问docker?我该如何测试?
我注意到当我运行命令时:
sudo cat /etc/passwd
我看到一个用户zookeeper。也许这是没有访问docker的用户?
但是当我这样做时:
su zookeeper
我不会更改用户个人资料
答案 0 :(得分:3)
在完成一些教程之后,我找到了以下教程的答案:http://frankhinek.com/deploy-docker-containers-on-mesos-0-20/
我必须在我的mesos-slaves上启用 Docker Containerizer
设置--containerizers = docker,mesos"命令行参数:
echo "docker,mesos" | sudo tee /etc/mesos-slave/containerizers
将执行程序超时增加到5分钟1 :(我想这是可选的)
echo "5mins" | sudo tee /etc/mesos-slave/executor_registration_timeout
重启Mesos Slave:
sudo service mesos-slave restart