Wie der Titel schon sagt, muss ich in der Lage sein, die IP-Adresse der Docker-Hosts und die Portzuweisungen vom Host zum Container abzurufen und das innerhalb des Containers zu tun.
Antworten
Zu viele Anzeigen?Wenn Sie die echte IP
-Adresse (nicht eine Bridge-IP
) unter Windows
benötigen und Docker 18.03
(oder neuer) haben, führen Sie Folgendes aus:
Führen Sie von Host aus bash auf dem Container aus, in dem der Bildname nginx
ist (funktioniert auf der Alpine Linux Distribution
):
docker run -it nginx /bin/ash
Führen Sie dann innerhalb des Containers aus
/ # nslookup host.docker.internal
Name: host.docker.internal
Address 1: 192.168.65.2
192.168.65.2
ist die IP des Hosts - nicht die Bridge-IP wie in der akzeptierten Antwort von spinus
.
Ich verwende hier host.docker.internal:
Der Host hat eine sich ändernde IP-Adresse (oder keine, wenn Sie keinen Netzwerkzugriff haben). Ab 18.03 empfehlen wir, sich mit dem speziellen DNS-Namen host.docker.internal zu verbinden, der auf die interne IP-Adresse verweist, die vom Host verwendet wird. Dies dient Entwicklungszwecken und funktioniert nicht in einer Produktionsumgebung außerhalb von Docker für Windows.
Ich habe Ubuntu 16.03. Für mich
docker run --add-host dockerhost:`/sbin/ip route|awk '/default/ { print $3}'` [image]
funktioniert NICHT (falsche IP wurde generiert)
Meine Lösung, die funktioniert hat, war:
docker run --add-host dockerhost:`docker network inspect --format='{{range .IPAM.Config}}{{.Gateway}}{{end}}' bridge` [image]
Docker für Mac Ich möchte von einem Container aus eine Verbindung zu einem Dienst auf dem Host herstellen
Der Host hat eine sich ändernde IP-Adresse (oder keine, wenn Sie keinen Netzwerkzugriff haben). Ab Version 18.03 empfehlen wir, sich mit dem speziellen DNS-Namen host.docker.internal zu verbinden, der zur internen IP-Adresse des Hosts löst.
Das Gateway ist auch als gateway.docker.internal erreichbar. https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds