Beim Starten eines Docker-Containers kann folgende Fehlermeldung auftreten:
Error starting userland proxy: Bind for 0.0.0.0:80 failed: port is already allocated
Was bedeutet der Fehler? #
Docker versucht, den Container auf Port 80 des Hosts zu binden.
Wenn dieser Port bereits von einem anderen Prozess genutzt wird, schlägt die Bindung fehl und Docker wirft den Fehler.
Typische Ursachen:
- Ein anderer Container läuft bereits auf Port 80.
- Ein lokaler Webserver (Apache, Nginx) verwendet Port 80.
- Ein früherer Container wurde nicht sauber gestoppt und blockiert noch den Port.
Lösungsschritte #
1. Prüfen, welcher Prozess Port 80 belegt #
Linux / macOS:
sudo lsof -i :80
oder
sudo netstat -tulpn | grep :80
Windows (PowerShell):
netstat -ano | findstr :80
2. Prozess stoppen oder Port ändern #
- Wenn ein Webserver läuft (Apache/Nginx):
sudo systemctl stop apache2
sudo systemctl stop nginx
- Wenn ein anderer Docker-Container Port 80 nutzt:
docker ps
docker stop <container_id>
3. Docker-Container auf einen anderen Port starten #
Wenn Port 80 zwingend vom Host belegt ist, kann Docker einen anderen Port mappen:
docker run -p 8080:80 <image_name>
Hierbei wird Port 8080 auf dem Host auf Port 80 im Container weitergeleitet.
4. Überprüfen, ob der Port wieder frei ist #
sudo lsof -i :80
Wenn keine Ausgabe erscheint, ist Port 80 frei.
5. Container erneut starten #
docker run -p 80:80 <image_name>
Quick-Fix-Checkliste #
- Prüfen, ob Port 80 bereits von einem Prozess belegt ist (
lsof
/netstat
) - Lokale Webserver stoppen (Apache, Nginx)
- Andere Docker-Container stoppen, die Port 80 nutzen
- Alternativ Container auf anderen Port starten (
-p 8080:80
) - Container erneut starten und testen
FAQ #
Warum tritt der Fehler auf?
Port 80 ist bereits durch einen anderen Prozess blockiert, Docker kann den Port nicht binden.
Kann ich mehrere Container auf Port 80 starten?
Nein, jeder Host-Port kann nur einmal belegt sein. Du kannst jedoch unterschiedliche Host-Ports mappen.
Wie finde ich schnell den blockierenden Prozess?
Unter Linux: sudo lsof -i :80
oder sudo netstat -tulpn | grep :80
.
Fazit #
Der Docker-Fehler Error starting userland proxy: Bind for 0.0.0.0:80 failed: port is already allocated
entsteht durch einen Portkonflikt. Entweder den blockierenden Prozess stoppen oder den Container auf einen anderen Host-Port mappen, um das Problem zu beheben.