Mesos / Marathon:前向端口使部署失败

时间:2015-11-21 16:57:05

标签: mesos marathon

我已经成功部署了marathon / mesos应用程序,但是如果我添加端口映射,它就不再起作用了。

我的奴隶容器运行为:

docker run --privileged -v /data/docker/notebook:/notebook:rw -v /etc/localtime:/etc/localtime:ro --net=host -e NFS_PATH=$NFS_PATH -e IP=$IP -e RESOURCES=$RESOURCES -e ATTRIBUTES=$ATTRIBUTES -e HOSTNAME=$HOSTNAME  -e MASTER=$MASTER -e SLAVE_PORT=$SLAVE_PORT  -d -p 5151:5151 --name $CONTAINER_NAME $IMAGE_NAME

然后在奴隶容器中我必须手动启动守护进程因为一个奇怪的[时间=" 2015-10-17T12:27:40.963674511Z" level = fatal msg ="启动守护程序时出错:初始化graphdriver时出错:操作不允许"]错误,所以我这样做:

docker -d -D --insecure-registry=localhost:5000  -g /var/test

然后我在Mesos上看到我的奴隶作为工作资源,我可以将一些应用程序发布到马拉松:

    {
  "id": "rstudiorocker2",
  "container": {
    "type"      : "DOCKER",
    "volumes"   : [],
    "docker"    : {
                "image"             : "localhost:5000/rocker/rstudio",
                "privileged"        : true,
                "parameters"        : [],
                "forcePullImage"        : true
                }
    }
}

此处应用程序即时部署在从属设备上。问题是摇杆正在侦听端口8787,我想在另一个端口上访问它,所以我尝试进行端口映射:

{
  "id": "rstudiorocker",
  "container": {
    "type"      : "DOCKER",
    "volumes"   : [],
    "docker"    : {
                "image"             : "192.168.0.38:5000/rocker/rstudio",
                "privileged"        : true,
                "parameters"        : [],
                "forcePullImage"        : true,
"network":"BRIDGE", 
"portMappings": [
                    { "containerPort": 8787, 
                    "hostPort": 2036, 
                    "protocol": "tcp" }
                , { "containerPort": 8787,
                    "hostPort": 2036,
                    "protocol": "udp" }
                ]}

    }

}

这里出现问题:应用程序停留在"停滞不前"阶段,从未被部署(即使我先删除所有其他应用程序):( 可能出现什么问题?

1 个答案:

答案 0 :(得分:0)

您已尝试将相同的容器端口映射两次,这是Marathon不允许的:

"portMappings": [
  { "containerPort": 8787, 
    "hostPort": 2036, 
    "protocol": "tcp" },
  { "containerPort": 8787,
    "hostPort": 2036,
    "protocol": "udp" }
]}

Marathon将使用

之类的消息拒绝此配置
{"message":"Bean is not valid","errors":[{"attribute":"ports","error":"Elements must be unique"}]}

尝试更改其中一个containerPort值,例如:

"portMappings": [
  { "containerPort": 8787, 
    "hostPort": 0, 
    "protocol": "tcp" },
  { "containerPort": 8789,
    "hostPort": 0,
    "protocol": "udp" }
]}