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 № 1Nie 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/