2016-11-07 5 views
2

Я запускаю рой докеров с режимом роуминга докеров. Допустим, у меня 4 узла, 1 менеджер, 3 сотрудника. В имена хостов:Установить имя хоста контейнера службы на имя хоста хоста

  • manager0
  • worker0
  • worker1
  • worker2

Я запустить службу в режиме global, так что каждый узел запускает услугу один раз. Скажем, команда выглядит следующим образом:

docker service create --name myservice --mode global --network mynetwork ubuntu wait 3600 

mynetwork является наложенной сети.

Теперь я пытаюсь получить доступ к имени хоста узла докера в контейнерах, поэтому я могу передать имя хоста в приложение в контейнере.

Я попытался передать имя хоста переменным окружения (--env hostname=$(hostname)), но на самом деле ${hostname} выполняется только для менеджера, а для имени хоста установлено значение manager0 для всех узлов.

Есть ли способ получить доступ к имени хоста или передать имя хоста контейнерам?

+0

Имя хоста каждый начал контейнер определяется при запуске случайной строки, так что я не думаю, что мы можем пройти это как опция при запуске. Возможно ли, чтобы вы запускали 4 разделенные службы, чтобы вы могли определить другое имя для каждого из них? –

+0

Это не очень хорошо масштабируется. 4 узла - это моя основная настройка, но в будущем добавляются новые узлы. Я не могу запустить службу для каждого узла. Возможно, мне стоит посмотреть хранилище ключей для сохранения имен хостов или, возможно, получить имена хостов с моего DNS-сервера. – k4l4m

ответ

0

Для создания сервиса с именем хоста вы можете использовать последние naming templates.

+0

Именование шаблонов BTW не только может быть использовано при создании сервиса, но и при обновлении службы (не документировано, но проверено и действительно работает, по крайней мере, для --hostname) –

 Смежные вопросы

  • Нет связанных вопросов^_^