573 Stimmen

Wie man die IP-Adresse des Docker-Hosts von innerhalb eines Docker-Containers erhält

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.

14voto

Kamil Witkowski Punkte 1848

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.

9voto

Aref Aslani Punkte 1420

In Linux können Sie ausführen

HOST_IP=`hostname -I | awk '{print $1}'`

In macOS ist Ihre Host-Maschine nicht der Docker-Host. Docker wird sein Host-Betriebssystem in VirtualBox installieren.

HOST_IP=`docker run busybox ping -c 1 docker.for.mac.localhost | awk 'FNR==2 {print $4}' | sed s'/.$//'`

8voto

ilya_direct Punkte 511

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]

6voto

BSCheshir Punkte 69

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

5voto

DinoStray Punkte 585

Meine Lösung:

docker run --net=host

dann im Docker-Container:

hostname -I | awk '{print $1}'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X