Rozwiązanie społecznościowe

Udostępnianie aplikacji CasaOS przez port 5000: zmień port hosta, nie port kontenera

A June 2024 CasaOS question about MusicBrainz, HandBrake, and other apps sharing port 5000; a later reply identified changing the host port while preserving the container port.

Użytkownik CasaOS zainstalował kilka aplikacji internetowych, które wymagały portu kontenera 5000. Dostępna była tylko jedna aplikacja, ponieważ wiele kontenerów próbowało opublikować ten sam port na hoście Debian. Zmiana obu stron mapowania spowodowała, że niektóre aplikacje przestały odpowiadać.

Prosta zasada jest następująca: pozostaw port aplikacji w kontenerze bez zmian, chyba że jej dokumentacja wyraźnie podaje, że port nasłuchiwania można skonfigurować. Zmieniaj tylko port po stronie hosta.

Czytaj mapowania portów Dockera od lewej do prawej

5001:5000

W tym mapowaniu 5001 to port hosta używany w przeglądarce, a 5000 to port, na którym aplikacja nasłuchuje wewnątrz kontenera. Oficjalny przewodnik Dockera dotyczący publikowania portów korzysta z tego samego modelu host–kontener.

Przypisz dwie aplikacje używające portu 5000 do różnych portów hosta

Aplikacja Port hosta Port kontenera Adres w przeglądarce
MusicBrainz 5001 5000 http://SERVER-IP:5001
HandBrake 5002 5000 http://SERVER-IP:5002

Każda para adresu IP hosta i portu musi być unikalna. Wiele kontenerów nadal może nasłuchiwać wewnętrznie na porcie 5000, ponieważ ich przestrzenie nazw sieciowych są od siebie odizolowane.

Dlaczego zmiana portu kontenera często powoduje awarię interfejsu WWW

Obraz może uruchamiać serwer WWW na stałym porcie wewnętrznym. Jeśli CasaOS zmapuje port hosta 5001 na port kontenera 5001, podczas gdy proces nadal nasłuchuje na 5000, Docker przekieruje ruch do nieużywanego gniazda. Kontener może wyglądać na działający prawidłowo, mimo że przeglądarka nie otrzyma żadnej odpowiedzi.

Zmieniaj port kontenera tylko wtedy, gdy aplikacja udostępnia w dokumentacji ustawienie lub zmienną środowiskową, która zmienia również port nasłuchiwania procesu.

Edytuj właściwe pole w CasaOS

  1. Otwórz ustawienia aplikacji lub konfigurację instalacji niestandardowej.
  2. Znajdź wpis portu zawierający wartości hosta i kontenera.
  3. Pozostaw wartość portu kontenera ustawioną na domyślną dla obrazu.
  4. Wybierz nieużywany port hosta.
  5. Zapisz zmiany i, gdy pojawi się monit, utwórz kontener ponownie lub uruchom go ponownie.
  6. Otwórz aplikację za pomocą nowego portu hosta.

Sprawdź port przed przypisaniem nowego

Sprawdź listę aplikacji CasaOS lub konfigurację kontenerów pod kątem istniejących mapowań. Weź również pod uwagę usługi zainstalowane bezpośrednio w Debianie, ponieważ mogą zajmować ten sam port hosta, nie pojawiając się jako aplikacja CasaOS. Unikaj przypisywania typowych portów infrastruktury, takich jak 22, 53, 80, 443 lub 445, chyba że rozumiesz działanie istniejącej usługi.

Sieć hosta odbiera tę elastyczność

W trybie sieci hosta kontener współdzieli przestrzeń nazw sieciowych hosta i nie może w zwykły sposób zmienić mapowania już używanego portu nasłuchiwania. Dokumentacja Dockera dotycząca sieci hosta potwierdza, że tylko jedna usługa może powiązać określony port hosta.

Najczęstsze pytania dotyczące konfliktów portów w CasaOS

Którą liczbę należy zmienić?

Zmień port hosta, czyli pierwszą liczbę w zapisie HOST:CONTAINER.

Czy każda aplikacja może używać portu kontenera 5000?

Tak, jeśli każdy kontener jest odizolowany, a każda aplikacja publikuje inny port hosta.

Dlaczego aplikacja zainstalowała się, ale nie otwiera się?

Mapowanie może wskazywać port kontenera, na którym aplikacja nie nasłuchuje.