Docker + Marathon:如何进行端口映射?

4

我正在尝试在我的基础设施上启动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

??


抱歉,我不太明白你在问什么。 - Sobrique
1个回答

9
端口映射(与Docker类似)仅适用于BRIDGE网络模式,有关详细信息请参见Marathon doc。在您的情况下,以下内容应该可以正常工作:
...
"container": {
  "type": "DOCKER",
  "docker": {
    "network": "BRIDGE",
    "portMappings": [
      {
        "protocol": "tcp",
        "containerPort": 8787,
        "hostPort": 8787
      }
    ]
  }
},
...

Mesosphere文档


你甚至可以将 hostPort 设置为 0,以便 Mesos 分配一个自动可用的端口……以防你想在集群或负载平衡配置中旋转更多相同的 Docker 镜像实例。 - Carlos Saltos

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