Docker: „port is already allocated“ beheben

Ein Container startet nicht und Docker meldet „port is already allocated“? Das bedeutet, dass der gewünschte Host-Port bereits belegt ist. In dieser Anleitung zeigen wir dir, wie du den Fehler „port is already allocated“ findest und behebst.

Die Fehlermeldung im Wortlaut

Error response from daemon: driver failed programming external connectivity
on endpoint web: Bind for 0.0.0.0:8080 failed: port is already allocated

Warum tritt der Fehler auf?

Jeder Host-Port kann nur von einem Dienst gleichzeitig genutzt werden. Läuft bereits ein anderer Container oder Prozess auf dem Port (hier 8080), kann Docker ihn nicht ein zweites Mal binden.


Lösung 1: Den belegenden Prozess finden

Finde heraus, was den Port belegt:

sudo ss -tlnp | grep :8080
# oder
sudo lsof -i :8080

Ist es ein anderer Container, zeigt ihn auch docker ps. Stoppe den blockierenden Container oder Dienst, wenn du ihn nicht brauchst.


Lösung 2: Einen anderen Host-Port wählen

Brauchst du beide Dienste, ändere in der docker-compose.yml oder im docker run-Befehl den Host-Port (die Zahl links vom Doppelpunkt):

ports:
  - "8081:80"   # Host-Port 8081 statt 8080

Der Container-Port rechts bleibt gleich – nur der Host-Port muss frei sein.


Lösung 3: Verwaiste Container aufräumen

Manchmal hält ein gestoppter, aber nicht entfernter Container den Port. Räume auf mit:

docker compose down
docker container prune

Mehr dazu unter Docker aufräumen. Wie Ports grundsätzlich funktionieren, erklärt Docker Netzwerke erklärt.


Häufige Fragen

Wie finde ich heraus, welcher Container den Port belegt?

docker ps zeigt in der Spalte PORTS, welcher Container welchen Host-Port nutzt. Für Nicht-Container-Prozesse verwendest du sudo ss -tlnp oder lsof -i :PORT.

Muss ich Docker neu starten?

Meist nicht. Es genügt, den blockierenden Prozess zu stoppen oder einen freien Host-Port zu wählen. Nur bei hartnäckig „hängenden“ Bindungen hilft ein Neustart des Docker-Dienstes.

Welche Portnummer sollte ich wählen?

Einen freien Port oberhalb von 1024, der von keinem anderen Dienst genutzt wird – etwa 8081, 8082 usw. Prüfe mit ss -tlnp, ob er frei ist.


Fazit

„port is already allocated“ heißt: Der Host-Port ist belegt. Finde den blockierenden Prozess mit ss oder docker ps, stoppe ihn oder weiche auf einen freien Host-Port aus. Verwaiste Container räumst du mit docker container prune auf.

Siehe auch  Nix develop mit Zsh statt Bash nutzen: So klappt der Shell-Wechsel
Nach oben scrollen