2016-11-29 19 views
8

W dzisiejszych czasach dużo czytam o tym, jak skonfigurować i uruchomić stos dokerów. Ale jedną z rzeczy, których zawsze mi brakuje, jest to, jak skonfigurować te konkretne pojemniki, aby zareagować na dostęp za pośrednictwem ich nazwy domeny, a nie tylko nazwy kontenera za pomocą dockns dns.Jak przypisać nazwy domen do kontenerów w dockerze

Chodzi mi o to, że, że mam microservice który jest dostępny z zewnątrz, na przykład: users.mycompany.com będzie przejść do kontenera microservice który prowadzącej api użytkowników

Wtedy kiedy spróbuj uzyskać dostęp do customer-list.mycompany.com, przejdzie do kontenera mikroserwisu, który obsługuje listy klientów. działa tylko w przypadku, gdy chce uzyskać dostęp do kontenera do kontenera, ale nie do kontenera.

Czy ktoś wie, jak powinienem to zrobić? Lub najlepszy sposób, aby to ustawić.

Odpowiedz

9

Musisz więc użyć koncepcji publikowania portów, aby port z twojego kontenera był dostępny przez port od twojego hosta. Stosując ten można można skonfigurować prosty proxy_pass z nginx, które przekierowuje users.mycompany.com do myhost: 1337 (zakładając, że publikowane port do 1337)

Tak więc, jeśli chcesz to zrobić, musisz skonfigurować swój pojemnik, aby odsłonić pewien portu przy użyciu:

docker run -d -p 5000:5000 training/webapp # publish image port 5000 to host port 5000 

można wtedy od gospodarza zwijają swoje localhost: 5000, aby uzyskać dostęp do pojemnika.

curl -X GET localhost:5000 

Jeśli chcesz ustawić nazwę domeny z przodu, musisz mieć instancję serwera WWW, który pozwala na proxy_pass nazwę hosta do pojemnika.

znaczy w nginx:

server { 
    listen 80; 
    server_name users.mycompany.com; 
    location/{ 
    proxy_pass http://localhost:5000; 
    } 
} 

radzę śledzić this tutorial, a może sprawdzić docker run reference

0

o ile wiem, Docker nie zapewnia tę funkcję po wyjęciu z pudełka. Ale na pewno jest tu kilka obejść. W rzeczywistości musisz wdrożyć serwer DNS na swoim hoście, który rozróżni kontenery i rozwiąże ich nazwy domenowe w dynamicznych IP. Więc można dać spróbować:

  1. wdrażać niektóre z Docker-świadomych rozwiązań DNS (Proponuję użyć SkyDNSv1/SkyDock);

  2. Skonfiguruj swój komputer do pracy z tym DNS (domyślnie SkyDNS sprawia, że ​​kontenery znają się nawzajem po nazwie, ale host nie jest tego świadomy);

  3. Uruchom swoje pojemniki z wyraźną --hostname (będziesz prawdopodobnie używać schematu container_name.image_name.dev.skydns.local)

można pominąć krok nr 2 i uruchom przeglądarkę wewnątrz pojemnika zbyt: odkryje kontener aplikacji WWW według nazwy hosta.

Powiązane problemy