2016-04-15 7 views
2

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

определение работы следующим образом:

{ 
    "schedule": "R0//P", 
    "name": "testjob", 
    "container": { 
    "type": "DOCKER", 
    "image": "path_to_image", 
    "network": "BRIDGE", 
    "parameters" : [ 
     {"key" : "-p", "value": "8888:4400"} 
    ] 
}, 
    "cpus": "4", 
    "mem": "512", 
    "uris": ["path to dockercfg.tar.gz"], 
    "command" : "./command-to-execute" 
} 

1) Docker работать на узле не принимает параметры во внимание. Любые предложения по правильному включению параметров как части запуска докеров будут высоко оценены?

2) Изображение Docker, которое я пытаюсь запустить, имеет ENTRYPOINT, указанный в нем. Так технически, ENTRYPOINT должен работать, когда докер запускает контейнер. С установкой Chronos я вынужден предоставить опцию «command» в задании JSON (опция пропуска команды при отправке задания возвращает ошибку). Когда контейнер на самом деле запланирован на целевом узле, вместо того, чтобы использовать ENTRYPOINT из файла docker, он фактически пытается запустить команду, указанную в определении задания JSON. Может ли кто-нибудь предоставить способ использования Chronos для запуска ENTRYPOINT вместо команды из определения JSON для задания Chronos? Примечания: Установка команды на пробел не помогает. ENTRYPOINT может быть задан как команда в определении задания JSON, и это должно устранить проблему с помощью команды. Но не имеете доступа к ENTRYPOINT для всех контейнеров.

*** Edit 1: Модифицированный вопрос с более или ином контексте и ясности

+0

Chronos не поддерживающие 'параметрами' была известная ошибка, которая была исправлена ​​в Chronos 2.5.0 (https://github.com/mesos/chronos/pull/538). Решение проблемы №2 предоставлено Tonsic. – Abhinav

ответ

0

Вы должны взглянуть на official docs о том, как запустить работу Докер.

Задача докера выполняется в том же формате, что и задание на задание или задание зависимости, и выполняется в контейнере Docker. Для того, чтобы настроить его, дополнительный контейнер аргумент является обязательным, который содержит типа (требуется), в изображение (требуется), а сети режим (дополнительный), установленный объемов (по желанию) и является ли Mesos всегда должна (сила) Pull (изображение) последнее изображение перед исполнением или нет (необязательно).

в отношении 1)
Там нет никакого способа, ИМХО, чтобы установить параметры, как вы пытаетесь. Кроме того, сопоставления портов задаются по-разному (с марафоном), но, как я понимаю, документы вообще невозможны. И, вероятно, не требуется для пакетной работы.

Если вы хотите использовать долгосрочные услуги, используйте Marathon.

Что касается 2)
Не уверен, что, если я вас правильно понимаю, но обычно это будет осуществляться посредством указания ENTRYPOINT в Dockerfile

Об 3)
Не уверен, что, если я вас правильно понял , но я думаю, что вы должны опустить свойство command с заданиями Docker.

+0

Спасибо Тоби. Reingarding # 2 # 3, у меня есть ENTRYPOINT в моем файле докеров. С Chronos я вижу ошибки подачи задания, если параметр команды пропускается в определении задания JSON. Поэтому параметр команды является обязательным. Когда контейнер запускается, он не принимает ENTRYPOINT в файле докеров, но пытается выполнить команду, указанную в задании JSON. Я ищу обходной путь для выполнения ENTRYPOINT в файле докеров, а не для команды, указанной в задании Chronos JSON. (Примечание. Невозможно сохранить параметр командной строки как пустой) – user1825838

0

Чтобы использовать точку входа контейнера докера, вы должны установить «shell» false, а команда должна быть пустой.Если команда отличается от пустой, chronos передаст ее в качестве аргумента для точки входа. Ваш json был бы как внизу.

Я не знаю, следует ли использовать поле «uris», оно устарело, и, если это то, что я думаю, оно больше не требуется для запуска приложений докеров.

О параметрах докера, я думаю, проблема связана с именем ключа, которое вы использовали. Кажется, вы должны опустить символ. Попробуйте, как показано ниже.

{ 

"schedule": "R0//P", 
    "name": "testjob", 
    "shell": false, 
    "container": { 
    "type": "DOCKER", 
    "image": "path_to_image", 
    "network": "BRIDGE", 
    "parameters" : [ 
     {"key" : "p", "value": "8888:4400"} 
    ] 
    }, 
    "cpus": "4", 
    "mem": "512", 
    "command" : "" 
} 
Смежные вопросы