Ein CasaOS-Benutzer installierte mehrere Webanwendungen, die den Container-Port 5000 erwarteten. Nur eine App war erreichbar, weil mehrere Container versuchten, denselben Port auf dem Debian-Host zu veröffentlichen. Nachdem beide Seiten der Zuordnung geändert wurden, reagierten einige Anwendungen nicht mehr.
Die einfache Regel lautet: Behalten Sie den Container-Port der Anwendung unverändert bei, es sei denn, in der eigenen Dokumentation der Anwendung wird angegeben, dass der Port, auf dem sie lauscht, konfigurierbar ist. Ändern Sie nur den Port auf der Host-Seite.
Docker-Portzuordnungen von links nach rechts lesen
5001:5000
In dieser Zuordnung ist 5001 der Host-Port, den Sie im Browser verwenden, und 5000 der Port, auf dem die Anwendung innerhalb des Containers lauscht. Docker verwendet in seinem offiziellen Leitfaden zur Port-Veröffentlichung dasselbe Host-zu-Container-Modell.
Zwei Apps mit Port 5000 auf unterschiedliche Host-Ports abbilden
| Anwendung | Host-Port | Container-Port | Browseradresse |
|---|---|---|---|
| MusicBrainz | 5001 | 5000 | http://SERVER-IP:5001 |
| HandBrake | 5002 | 5000 | http://SERVER-IP:5002 |
Jede Kombination aus Host-IP und Port muss eindeutig sein. Mehrere Container können intern dennoch auf 5000 lauschen, da ihre Netzwerk-Namensräume voneinander isoliert sind.
Warum das Ändern des Container-Ports die Weboberfläche oft unbrauchbar macht
Ein Image startet seinen Webserver möglicherweise auf einem festgelegten internen Port. Wenn CasaOS den Host-Port 5001 dem Container-Port 5001 zuordnet, während der Prozess weiterhin auf 5000 lauscht, leitet Docker den Datenverkehr an einen nicht belegten Socket weiter. Der Container kann weiterhin einen gesunden Status anzeigen, obwohl der Browser keine Antwort erhält.
Ändern Sie den Container-Port nur, wenn die vorgelagerte Anwendung eine dokumentierte Einstellung oder Umgebungsvariable bereitstellt, die auch den Port ändert, auf dem der Prozess lauscht.
Das richtige Feld in CasaOS bearbeiten
- Öffnen Sie die Einstellungen der App oder die Konfiguration für die benutzerdefinierte Installation.
- Suchen Sie den Porteintrag mit den Host- und Containerwerten.
- Belassen Sie den Containerwert beim Standardwert des Images.
- Wählen Sie einen freien Host-Port.
- Speichern Sie die Änderungen und erstellen Sie den Container neu oder starten Sie ihn neu, wenn Sie dazu aufgefordert werden.
- Öffnen Sie die App über den neuen Host-Port.
Vor der Vergabe eines neuen Ports prüfen
Überprüfen Sie die CasaOS-App-Liste oder die Containerkonfiguration auf vorhandene Zuordnungen. Berücksichtigen Sie auch direkt auf Debian installierte Dienste, da diese denselben Host-Port belegen können, ohne als CasaOS-App zu erscheinen. Vermeiden Sie die Vergabe gängiger Infrastruktur-Ports wie 22, 53, 80, 443 oder 445, sofern Sie den vorhandenen Dienst nicht genau kennen.
Das Host-Netzwerk nimmt diese Flexibilität
Im Host-Netzwerkmodus verwendet der Container denselben Netzwerk-Namensraum wie der Host und kann einen bereits belegten Listening-Port normalerweise nicht neu zuordnen. Die Dokumentation zum Host-Netzwerk von Docker bestätigt, dass nur ein Dienst einen bestimmten Host-Port binden kann.
FAQ zu Portkonflikten in CasaOS
Welche Zahl sollte ich ändern?
Ändern Sie den Host-Port, also die erste Zahl in HOST:CONTAINER.
Kann jede App den Container-Port 5000 verwenden?
Ja, sofern jeder Container isoliert ist und jeder einen anderen Host-Port veröffentlicht.
Warum wurde die App installiert, lässt sich aber nicht öffnen?
Die Zuordnung verweist möglicherweise auf einen Container-Port, auf dem die Anwendung nicht lauscht.
