Docker + Marathon:如何做端口映射?

Docker + Marathon : how to do a port mapping ?

我正在尝试在我的基础架构上启动 rstudio。

如果我这样做:

sudo docker run -d -p 8787:8787 192.168.0.38:5000/rocker/rstudio

然后我的服务器上有 rstudio 运行。 但是我有 mesos 和 marathon,我想用这个 docker 命令制作一个 Marathon 的应用程序。

找不到正确映射端口的方法。

我试过了:

{
  "type": "DOCKER",
  "volumes": [],
  "docker": {
    "image": "192.168.0.38:5000/rocker/rstudio",
    "network": "HOST",
    "privileged": true,
    "parameters": [
      {
        "key": "p",
        "value": "8787:8787"
      }
    ],
    "forcePullImage": true
  }
}

希望我能工作,但它永远不会开始。

我试过了:

{
  "type": "DOCKER",
  "volumes": [],
  "docker": {
    "image": "192.168.0.38:5000/rocker/rstudio",
    "network": "HOST",
    "portMappings": [
      {
        "containerPort": 8787,
        "hostPort": 8787,
        "servicePort": 10003,
        "protocol": "tcp"
      }
    ],
    "privileged": true,
    "parameters": [],
    "forcePullImage": true
  }
}

哪个更好。

你会建议我转换哪个 json 这个有效的 docker 命令:

sudo docker run -d -p 8787:8787 192.168.0.38:5000/rocker/rstudio

??

端口映射(与 Docker 一样)仅与 BRIDGE 网络模式相关,另请参阅 Marathon doc。在您的情况下,以下应该有效:

...
"container": {
  "type": "DOCKER",
  "docker": {
    "network": "BRIDGE",
    "portMappings": [
      {
        "protocol": "tcp",
        "containerPort": 8787,
        "hostPort": 8787
      }
    ]
  }
},
...

Mesosphere doc