Почему containerPort и hostPort должны быть одинаковыми в DCOS?

У меня есть веб-приложение с приведенным ниже определением приложения и настройкой DCOS, работающее в лазурном облаке с развернутым marathon-lb. Когда я добавляю ниже в качестве службы.

{
  "id": "web",
  "container": {
    "type": "DOCKER",
    "docker": {
      "image": "myimage",
      "network": "BRIDGE",
      "portMappings": [
        { "hostPort": 5000, "containerPort": 5000, "servicePort": 0 }
      ],
      "forcePullImage":true
    }
  },
  "instances": 1,
  "cpus": 0.1,
  "mem": 614,
  "labels":{
    "HAPROXY_GROUP":"external",
    "HAPROXY_0_VHOST":"localhost",
    "HAPROXY_0_MODE":"http"
  }
}

Я могу получить доступ к моему приложению через браузер только тогда, когда я сохраняю containerPort и hostPort одинаковыми.

Если я изменю hostPort на 0, я не смогу получить доступ к приложению. И мне нужен hostPort как 0, чтобы я мог масштабировать приложение, и оно выделяло приложению свободный hostPort. Что здесь не так, пожалуйста, руководство?


person happy    schedule 22.08.2018    source источник


Ответы (1)


hostPort равное 0 означает, что ваше приложение будет смотреть на случайный порт, назначенный Mesos. См. этот ответ

Вам не нужно держать hostPort и containerPort равными. containerPort должно совпадать с прослушиваемым приложением порта. hostPort может быть любым портом (поэтому вы должны использовать для него 0). Затем Containerizer будет передавать пакеты, отправленные в/из вашего hostPost, в containertPort внутри контейнера.

person janisz    schedule 29.08.2018