Falls es beim Start eines Docker Containers unter Windows zu folgendem Fehler kommt
docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint […]: Error starting userland proxy: Bind for 0.0.0.0:80: unexpected error Permission denied.
könnte ein Windows-Dienst der still und heimlich im Hintergrund auf Port 80 läuft die Ursache dafür sein.
Mit dem PowerShell Befehl
Get-NetTCPConnection -LocalPort 80 | Format-List
findet man dann relativ wenig hilfreiche Informationen – außer, dass wie in meinem Fall ein Prozess mit der ID 4 den Port verwendet.
Get-Process -Id 4
Liefert als „ProcessName“ lediglich „System“.
Wenn man anschließend den PowerShell Befehl
net stop http
verwendet, listet Windows die Dienste auf, die aktuell an den Port 80 angebunden sind und im nächsten Schritt beendet werden. Bei mir waren das u.a. die Druckerwarteschlange, Windows Media Player-Netzwerkfreigabedienst, WWW-Publishingdienst, SSDP-Suche und einige weitere mehr. Die Abfrage, ob diese Dienste jetzt beendet werden sollen habe ich mit „J“ bestätigt und schon funktionierte anschließend auch der Start eines nginx auf dem lokalen Port 80.
docker run -d -p 80:80 nginx