Nicht verwenden --net=host
. Es sieht so aus, als würden Sie Docker bitten, den Port zu veröffentlichen, seitdem Sie die -p 27017:27017
Option bereitgestellt haben. Andernfalls --net=host
fordert Docker jedoch auf, alle Netzwerkisolationsfunktionen zu deaktivieren, einschließlich der Port-Veröffentlichung.
Docker-for-Windows richtet in Hyperv eine kleine VM ein, auf der Docker ausgeführt wird. Ihr --net=host
Container hört auf die Schnittstellen dieser VM zu. Die Docker-for-Windows-Netzwerkportweiterleitung berücksichtigt nur die veröffentlichten Ports. Daher findet keine Weiterleitung statt.
Wenn Sie denselben Befehl ohne ausführen, --net=host
sollten Sie ein anderes Ergebnis erhalten.
Wenn Sie versuchen, einen containerisierten Prozess auszuführen und der veröffentlichte Port scheinbar nicht funktioniert, liegt dies möglicherweise daran, dass der Prozess die lo0
Schnittstelle des Containers überwacht und nicht die eth0
Schnittstelle.
Hier ist ein guter Benchmark-Testcontainer zum Testen von Veröffentlichungsports:
docker run --name testweb -d -p 8989:80 nginx:alpine
Sie sollten dann in der Lage sein, eine Verbindung zu http://127.0.0.1:8989 herzustellen und eine Nginx-Begrüßungsseite anzuzeigen.