Я запускаю рой докеров с режимом роуминга докеров. Допустим, у меня 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
для всех узлов.
Есть ли способ получить доступ к имени хоста или передать имя хоста контейнерам?
Имя хоста каждый начал контейнер определяется при запуске случайной строки, так что я не думаю, что мы можем пройти это как опция при запуске. Возможно ли, чтобы вы запускали 4 разделенные службы, чтобы вы могли определить другое имя для каждого из них? –
Это не очень хорошо масштабируется. 4 узла - это моя основная настройка, но в будущем добавляются новые узлы. Я не могу запустить службу для каждого узла. Возможно, мне стоит посмотреть хранилище ключей для сохранения имен хостов или, возможно, получить имена хостов с моего DNS-сервера. – k4l4m