/ / mapowanie kontenerów na hosta dokującego / etc / hosts automatycznie z tym samym portem dla każdego kontenera - docker, docker-compose

mapowanie kontenerów na hosty docker'a / etc / hosts automatycznie z tym samym portem dla każdego kontenera - docker, docker-compose

Mam podstawową konfigurację skomponowania dokera składającą się z następujących elementów:

  • podsieć mostka dokującego od 192.168.50.0/24
  • 4 usługi: królik, wiosenna konfiguracja, taryfy, zameldowanie
  • każda z tych usług ma swoją nazwę hostapoprawnie ustawione i są w stanie znaleźć się w podsieci (192.168.50.0). Ips są dynamicznie przypisywane w tej podsieci i wszystkie zaczynają się na porcie 8080 w swoich odpowiednich kontenerach.
  • Z hosta widoczna jest sieć mostu, a każda instancja kontenera jest dostępna za pomocą jej adresu IP.

Nie mogę rozwiązać problemów z tymi pozycjami hosta bez mapowania innego portu niż 8080 na hosta dokera.

W przypadku tego wpisu w pliku / etc / hosts mojego hosta: 192.168.50.1 odpłatne sprawdzanie książki konfiguracji królika: usługi są dostępne tylko wtedy, gdy jawnie powiążę „porty 8080 usług” z portem 8081 mojego hosta, port 8082, port 8083 ... dla każdej usługi w pliku .yml.

Czy istnieje inny sposób upewnienia się, że usługi są wykrywalne po nazwie dns, nawet spoza podsieci?

Odpowiedzi:

1 dla odpowiedzi № 1

Nie można powiązać wszystkich 4 kontenerów z tym samym portem na hoście. Tylko jeden kontener na port. Istnieją jednak pewne obejścia:

Opcja 1: Użyj różnych portów dla każdego kontenera

  • Na przykład powiąż porty 8081, 8082, 8083 i 8084.
  • W / etc / hosts poprawnie mapuj adresy IP każdego kontenera.
  • Podczas łączenia podaj port oprócz nazwy hosta. Lubić https://fares:8081

Twój / etc / hosts może wyglądać tak:

192.168.50.1 fares
192.168.50.2 rabbit
...

Opcja 2: użyj odwrotnego serwera proxy

Możesz skonfigurować dodatkowy Kontener dokowania jako reverse proxy w swoim docker-compose.yml. Kontener odwrotnego proxy może połączyć się z portem 8080 i przekazać żądanie do odpowiedniego kontenera w zależności od nazwy hosta. Nie musisz wiązać portów z innych kontenerów na hoście, ponieważ zwrotny serwer proxy przekazuje żądania. Istnieje post na blogu, który wyjaśnia szczegółowo, jak to działa: http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/