Wie kann ich den Port eines Docker-Containers ändern?
- Einleitung
- Port-Zuordnung bei Docker starten
- Ports nachträglich ändern
- Alternative: Docker Compose verwenden
- Zusammenfassung
Einleitung
Docker ist eine beliebte Containerplattform, die es ermöglicht, Anwendungen isoliert und einfach portabel zu betreiben. Um einen Dienst, der in einem Docker-Container läuft, von außen erreichbar zu machen, müssen Ports zwischen dem Host-System und dem Container weitergeleitet werden. Häufig stellt sich die Frage, wie man diese Port-Weiterleitung nachträglich ändert oder beim Start des Containers korrekt konfiguriert.
Port-Zuordnung bei Docker starten
Die Port-Weiterleitung wird beim Start eines Containers über den Schalter -p beziehungsweise --publish definiert. Dabei wird ein Port auf dem Host-System an einen Port im Container gebunden. Zum Beispiel bedeutet -p 8080:80, dass der Host-Port 8080 auf den Container-Port 80 weiterleitet. Diese Zuordnung wird beim Container-Start festgelegt und kann während der Laufzeit nicht verändert werden.
Ports nachträglich ändern
Da die Port-Mappings beim Start angegeben werden, ist es nicht möglich, diese nach dem Erstellen oder Starten eines Containers direkt zu ändern. Wenn man den Port ändern möchte, muss der bestehende Container gestoppt und gelöscht werden. Anschließend wird ein neuer Container mit dem gewünschten Port-Mapping gestartet. Zum Beispiel:
docker stop containername und docker rm containername gefolgt von docker run -p NEUER_HOST_PORT:CONTAINER_PORT ...
Alternative: Docker Compose verwenden
Wer mehrere Container verwaltet oder die Konfiguration versionieren möchte, kann Docker Compose verwenden. In der YAML-Datei (meist docker-compose.yml) definiert man unter ports die Port-Mappings. Um den Port zu ändern, passt man die YAML-Datei an und startet die Container mit den neuen Einstellungen neu. Dies erleichtert das Verwalten von komplexeren Setups.
Zusammenfassung
Das Ändern eines Docker-Ports erfolgt nicht direkt an einem laufenden Container, sondern durch Neustarten mit einem neuen Port-Mapping. Die korrekte Vorgehensweise besteht aus dem Stoppen und Entfernen des Containers und dem Starten eines neuen Containers mit dem gewünschten Port. Dadurch wird die Verbindung zwischen Host-Port und Container-Port neu definiert.
