mesos/marathon:前向端口使部署失败

c9x0cxw0  于 2021-06-21  发布在  Mesos
关注(0)|答案(1)|浏览(364)

我已经成功地部署了marathon/mesos应用程序,但是如果我添加了端口Map,它就不再工作了。
我的从属容器运行为:

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

然后在从属容器中,我必须手动启动守护进程,因为出现一个奇怪的[time=“2015-10-17t12:27:40.963674511z”level=fatal msg=“error starting daemon:error initialization graphdriver:operation not allowed”]错误,所以我:

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

然后我将我在mesos上的奴隶视为一个工作资源,我可以在marathon上发布一些应用程序:

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

在这里,应用程序立即部署在从属服务器上。问题是rocker正在监听端口8787,我想在另一个端口上访问它,所以我尝试进行端口Map:

{
  "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" }
                ]}

    }

}

现在问题出现了:应用程序停留在“暂存”阶段,从未被部署(即使我先删除了所有其他应用程序):(会出什么问题?

ppcbkaq5

ppcbkaq51#

您已尝试两次Map同一个集装箱港口,这是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" }
]}

相关问题