Marathon Docker任务失败

时间:2016-10-31 10:02:41

标签: docker mesos marathon

我在我的两台机器上安装了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文件。

mesos: simple command job success

但是现在如果我运行一个简单的泊坞窗图像任务:

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?我该如何测试?

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

sudo cat /etc/passwd

我看到一个用户zookeeper。也许这是没有访问docker的用户?

但是当我这样做时:

  su zookeeper

我不会更改用户个人资料

1 个答案:

答案 0 :(得分:3)

在完成一些教程之后,我找到了以下教程的答案:http://frankhinek.com/deploy-docker-containers-on-mesos-0-20/

我必须在我的mesos-slaves上启用 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