Каким образом можно получить имя хоста хост-докера внутри контейнера, запущенного на этом хосте, кроме использования переменных среды? Я знаю, что могу передать имя хоста в качестве переменной среды в контейнер во время создания контейнера. Мне интересно, как я могу найти его во время выполнения.
foo.example.com (docker host)
bar (docker container)
Есть ли способ для контейнера bar
, запущенного в хосте docker foo.example.com
, чтобы получить "foo.example.com"?
Изменить, чтобы добавить прецедент:
Контейнер создаст запись SRV для обнаружения службы формы
_service._proto.name. TTL class SRV priority weight port target.
-----------------------------------------------------------------
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo.example.com.
где 20003 - динамически назначенный порт на хосте docker для службы, прослушивающей какой-либо фиксированный порт в строке (докер обрабатывает сопоставление от порта хоста до порта контейнера).
В моем контейнере будет выполняться проверка работоспособности, чтобы убедиться, что она успешно создала эту запись SRV, поскольку на других докере-хостах будет также много других контейнеров-баров, которые также создают свои собственные записи SRV.
_service._proto.name. TTL class SRV priority weight port target.
-----------------------------------------------------------------
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo.example.com. <--
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo2.example.com.
_bar._http.example.com 60 IN SRV 5000 5000 20003 foo3.example.com.
Проверка работоспособности будет проходить через записи SRV, которые ищут первый выше и, следовательно, должны знать свое имя хоста.
в сторону
Я использую Helios и только что узнал, что добавляет env var для меня, из которого я могу получить имя хоста. Но мне было просто любопытно, если бы я использовал докер без Гелиоса.