马拉松 Docker 任务失败

4
我已在两台机器上安装了Marathon和Mesos。 我可以成功地从Marathon 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文件。

mesos: simple command job success

但是现在,如果我运行一个简单的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": {}
        }
      ]
    }

在Mesos上,我看到它立即失败了:

mesos: docker job failed

而且我没有stderr或stdout文件:

No stderr or stdout files

我注意到在我的两台机器上,当我运行以下命令时:
docker ps -a

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

是什么影响了docker部署?

我能想到的一个原因是marathon用于启动任务的用户没有访问docker的权限。我该如何测试这个问题?

我注意到当我运行以下命令时:

sudo cat /etc/passwd

我看到一个名为zookeeper的用户。也许这个用户没有访问docker的权限?
但是当我执行以下操作时:
  su zookeeper

我不改变用户个人资料

1个回答

3

在查看了几个教程后,我从以下教程中找到了答案:http://frankhinek.com/deploy-docker-containers-on-mesos-0-20/

我需要在我的mesos-slaves上启用Docker容器化

  1. Set the --containerizers=docker,mesos" command line parameter:

    echo "docker,mesos" | sudo tee /etc/mesos-slave/containerizers
    
  2. Increase the executor timeout to 5 minutes1: (i guess this is optional)

    echo "5mins" | sudo tee /etc/mesos-slave/executor_registration_timeout
    
  3. Restart the Mesos Slave:

    sudo service mesos-slave restart
    

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接