2015-11-21 3 views
0

У меня есть приложение для марафона/mesos, но если я добавлю сопоставление портов, он больше не работает.Mesos/Marathon: forward port make deployement fail

Мой раб контейнер запущенной как:

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» уровень = фатальный тзд = «ошибка при запуске демона: ошибка инициализации graphdriver: операция не разрешена»] ошибка, так что я:

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

Тогда я вижу мой раб на Mesos в качестве рабочего Ressource, и я могу опубликовать некоторые приложения к марафону:

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

    } 

} 

и здесь проблемы появляются: приложение пребывания на «спекуляция "этап, не никогда не развертывается (даже если удалить все другие приложения первое) :( Что может пойти не так

ответ

0

Вы попытались отобразить тот же контейнерный порт в два раза, что не допускается Marathon:

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

Марафон отклонит эту конфигурацию с сообщением, как

{"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" } 
]} 
Смежные вопросы