Integracja kontenerów Docker z chmurą UniCloud jest jedną z najważniejszych i najbardziej pożądanych usług, oferowanych przez tę platformę. Połączenie przenośności kontenerów Docker z elastycznym zarządzaniem UniCloud jest dużą zaletą dla programistów i pozwala na bezproblemowe hostowanie i utrzymywanie wszystkich typów aplikacji dostępnych jako szablony Dockera.
Poniższy przewodnik omawia podstawowe zasady pracy z aplikacjami zbudowanymi w oparciu o kontenery Docker, które mogą zainteresować zarówno początkujących jak i średnio zaawansowanych deweloperów. Omówimy sposoby podłączania do kontenerów Docker w środowisku UniCloud i miejsca, gdzie można znaleźć podstawowe informacje o kontenerze, które są wymagane do ustanowienia takiego połączenia.
- Ustanawianie wewnętrznych połączenie z kontenerami Docker
- Uzyskiwanie dostępu do kontenera Docker z zewnątrz
Połączenie wewnętrzne
Każdy kontener Docker w chmurze UniCloud automatycznie otrzymuje unikalną wewnętrzną nazwę domenową i wewnętrzny adres IP zaraz po stworzeniu. Ponadto, parametry te mogą być użyte do dostępu do kontenerów w ramach pojedynczej chmury (czyli w celu ustanowienia połączenia między sobą przez wewnętrzną sieć platformy).
- Pierwsza opcja, którą należy wziąć pod uwagę w przypadku potrzeby utworzenia połączenia między kontenerami jest wbudowana funkcjonalność linków Dockera. Pozwala ona na łączenie kontenerów z różnych warstw w obrębie jednego środowiska dla bezpiecznego przesyłania informacji o zmiennych środowiskowych ze źródłowego obrazu Dockera do odbiorcy bez ujawniania na zewnątrz jakichkolwiek portów.
W tym celu wystarczy wybrać odpowiednią warstwę i określić alias dla połączenia (wszystkie zmienne otrzymają odpowiedni prefiks zgodny z nim):
Po wykonaniu tych czynności można przejść do sekcji Zmienne ustawień kontenera Docker i dostosować każdą z nich oddzielnie. Niniejszym, zmiana wartości zmiennej środowiskowej dla kontenera, który jest połączony z innym, spowoduje jej automatyczną aktualizację w kontenerze dla którego zostało zdefiniowane połączenie.
- W przypadku, gdy istnieje potrzeba ustanowienia wewnętrznego połączenia innego typu (takiego, które wymaga ręcznego dostosowania przy użyciu plików konfiguracyjnych), wymagana jest znajomość nazwy domenowej kontenera lub adresu IP, pod którym można uzyskać do niego dostęp za pośrednictwem sieci wewnętrznej platformy.
Wymagane informacje mogą być uzyskane na dwa sposoby:
- poprzez powiadomienie e-mail otrzymane po utworzeniu środowiska. Wewnętrzna nazwa domenowa i adres IP są wymienione w sekcji z danymi administracyjnymi kontenera:
Gratulacje! Nowy kontener Docker został pomyślnie dodany do środowiska env-7484077 w chmurze UniCloud. Aby uzyskać dostęp do interfejsu administratora web skorzystaj z następujących informacji: Adres URL: http://docker37669-env-7484077.unicloud.pl Login: root Hasło: ******* IP: 100.66.15.254
- w panelu sterującym te same dane można znaleźć w następujący sposób:
- kliknij przycisk Otwórz w przeglądarce obok kontenera Docker – interfejs węzła zostanie otwarty w nowej karcie przeglądarki, dzięki czemu można łatwo skopiować jego domenę z paska adresu.
Ewentualnie, kliknij prawym przyciskiem myszy na nazwie domeny pod nazwą środowiska (zaznaczone wyżej) i skopiuj podany link.
- Wewnętrzny adres IP węzła można zobaczyć przez rozwinięcie listy Opcje dodatkowe dla kontenera, jak to jest pokazane na obrazku poniżej.
Pobrane informacje mogą być wykorzystane do ustanowienia wewnętrznego połączenia kontenerów Docker w chmurze Unicloud.
Połączenie zewnętrzne
W celu uzyskania dostępu do kontenera Docker spoza platformy (czyli z internetu), UniCloud proponuje następujące rozwiązania:
- Jeżeli usługa lub aplikacja, która działa w ramach kontenera Docker, słucha na porcie 80, zostanie ona automatycznie udostępniona w sieci zewnętrznej (z przypisaną nazwą domenową) poprzez współdzielony load balancer UniCloud.
W takim przypadku wystarczy kliknąć przycisk Otwórz w przeglądarce dla odpowiedniego węzła, aby się z nim połączyć (opcja ta działa dla połączeń HTTP).
Uwaga: W przypadku, gdy kontener Docker nie ma dołączonego zewnętrznego IP, UniCloud wykonuje automatyczne przekierowanie portów. Oznacza to, że jeśli aplikacja nasłuchuje na niestandardowym porcie TCP, UniCloud spróbuje automatycznie go wykryć i przesyła wszystkie przychodzące żądania do tego numeru portu. W rezultacie, w większości przypadków aplikacja lub usługa będą dostępne przez Internet pod nazwą domenową odpowiedniego węzła bezpośrednio po utworzeniu.
Aby zablokować taką możliwość, należy zadeklarować odpowiednie zasady w ustawieniach zapory dla kontenera.
- W przypadku bardziej złożonych konfiguracji UniCloud zapewnia funkcjonalność punktów końcowych (dostępne w Ustawieniach środowiska w sekcji o nazwie Mapowanie portów):
Pozwala to na wystawienie wymaganego prywatnego portu kontenera przez losowo wybrany publiczny port współdzielonego load balancera UniCloud, dzięki czemu można uzyskać do niego dostęp za pośrednictwem pokazywanego adresu URL.
- Ostatnią opcją, która daje maksymalną swobodę (pozwalając na przykład na zabezpieczenie połączenia niestandardowym certyfikatem SSL, pozbycie się ograniczeń co do ilości jednoczesnych połączeń, etc.) jest dołączenie publicznego adresu IP do kontenera Docker.
W ten sposób dowolna aplikacja słuchająca na dowolnym porcie może zostać udostępniona w sieci zewnętrznej.
Uwaga: opcja publicznego adresu IP jest dodatkowo płatna. Dokładny koszt jej użytkowania można zobaczyć po najechaniu na widget cen w prawej części swojego kreatora topologii lub poprzez przejście do karty Saldo punktowe > Ceny i limity > Opcje.