wake-up-neo.com

So erhalten Sie die IP-Adresse des ausgeführten Docker-Containers

Ich verwende Docker für Mac. Ich verwende einen NodeJS-basierten Microservice in einem Docker-Container. Ich möchte den Node Microservice über den Browser testen. Wie erhalte ich die IP-Adresse des laufenden Docker-Containers?

65
user3067875

Wenn Sie dem Container keine Ports von Ihrem Host zuordnen möchten, können Sie direkt auf die Docker-Bereichs-IP für den Container zugreifen. Auf diesen Bereich kann standardmäßig nur von Ihrem Host aus zugegriffen werden. Sie können die Daten Ihres Containernetzwerks folgendermaßen überprüfen:

docker inspect <containerNameOrId>

Wahrscheinlich ist es besser zu filtern:

docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1

Normalerweise ist der Standard-Docker-IP-Bereich 172.17.0.0/16. Ihr Host sollte 172.17.0.1 sein und Ihr erster Container sollte 172.17.0.2 sein, wenn alles normal ist und Sie keine speziellen Netzwerkoptionen angegeben haben.

EDIT Eine weitere elegantere Methode, Docker-Funktionen anstelle von "Bash-Tricks" zu verwenden:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>
77
OscarAkaElvis

Verwenden Sie die Option --format, um nur die IP-Adresse statt der gesamten Containerinformationen abzurufen:

Sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
12
Nilesh Patel

wenn Sie es direkt im Container erhalten möchten, können Sie es versuchen

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17
8
Ilya Yevlampiev

Verwenden Sie für moderne Docker-Engines diesen Befehl:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

und für ältere Motoren verwenden:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id
7
Nima Ghoroubi

Sie können Ihren Container mit dem Flag -P starten. Dies "weist" dem exponierten Port Ihres Bildes einen zufälligen Port zu.

Mit docker port <container id> können Sie den zufällig ausgewählten Port sehen. Der Zugriff ist dann über localhost:port möglich.

5
gScht

In meinem Fall funktionierte unter Mac :

Ich konnte nicht direkt auf Container-IPs auf dem Mac zugreifen. Ich muss localhost für die Portweiterleitung verwenden, z. Wenn der Port 8000 ist, dann http://localhost:8000

Siehe https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds

Die ursprüngliche Antwort stammte von: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949

1
Lavande