Я задал этот вопрос в докере IRC за выходные, но мне пришлось уйти, прежде чем я подумал о ответах:
Если у меня есть несколько приложений, работающих в контейнерах (давайте, на данный момент, предположим, что все они работают на одном физическом оборудовании, но это не обязательно так), и я хочу, чтобы каждый из них мог чтобы найти друг друга автоматически.
Используя какой-то реестр (например, etcd или DNS-SD/Bonjour), вы можете объявить о своей услуге и любых соответствующих подробностях и другие приложения узнают о них и трафик соответственно.
Проблема заключается в том, что, хотя приложение может знать, какое имя хоста/порт он обслуживает в контейнере, это не обязательно должен быть порт или адрес, из которого он доступен. Есть два бита информации, которые необходимо объединить:
- Где доступ к сервису; доступный снаружи контейнера
- Что выполняет служба (номер версии, тип сервиса); доступный изнутри контейнера
Как бы вы порекомендовали мне получить эту информацию через контейнерный барьер?
- Я мог бы предоставить докер через TCP в контейнеры, поэтому приложение может запросить, где его показывать, но это, похоже, нарушает разделение проблем.
- Я мог бы открыть файл/порт в моем контейнере, который запрашивает хост-система после запуска контейнера для подготовки к анонсу, но это немного похоже на то, что я буду изобретать WSDL.
Любые мысли или рекомендации относительно того, как я должен решить эту проблему?