Come ottenere l'indirizzo IP del container Docker in esecuzione


Risposte:


115

Se non desideri mappare le porte dal tuo host al container, puoi accedere direttamente all'ip della gamma docker per il container. Per impostazione predefinita, questo intervallo è accessibile solo dal tuo host. Puoi controllare i dati della rete del contenitore facendo:

docker inspect <containerNameOrId>

Probabilmente è meglio filtrare:

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

Di solito, l'intervallo IP predefinito della finestra mobile è 172.17.0.0/16. Il tuo host dovrebbe essere 172.17.0.1e il tuo primo contenitore dovrebbe essere 172.17.0.2se tutto è normale e non hai specificato alcuna opzione di rete speciale.

MODIFICA Un altro modo più elegante di utilizzare le funzionalità di finestra mobile invece di "bash tricking":

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

7
Stai parlando dell'IP interno e non ha nulla a che fare con la domanda in questione. La tua risposta fornisce solo confusione al lettore. Poiché l'IP è l'IP della macchina su cui è in esecuzione Docker. Che è solo localhost:)
David Gatti

Tui hai torto. L'OP non ha specificato nulla sul microservizio deve essere accessibile dall'esterno. Ha detto solo "testare il microservizio del nodo tramite il browser" e questo può essere fatto con il metodo proposto http://172.17.0.2:anyPortdall'host. Ovviamente se vuoi accedervi usando localhost sull'host, devi mappare le porte. Vedrà cosa vuole l'OP.
OscarAkaElvis

3
Stai dicendo che puoi accedere all'IP interno all'interno del Container dall'host? Questo è fisicamente impossibile, questa è una rete completamente diversa. Non solo ho appena controllato e sì, non riesco ad accedere a 172.17.0.7 del mio container docker, quindi dovrei essere in grado di vedere tutti i concorrenti docker se eseguo la scansione della mia macchina host con uno scanner di rete, e questo non è il caso ancora. So che non dovrebbe funzionare, ho testato quello che dici (non si sa mai) e non funziona. Quindi forse la tua spiegazione manca di una parte fondamentale?
David Gatti

I contenitori sono accessibili dall'host. Provalo tu stesso ... ti darò alcuni suggerimenti. 1. Scarica un run container: docker run --name struts --rm -i tomcat2. Ottieni l'ip del tuo container (se ne hai solo uno): docker inspect struts | grep '"IPAddress"' | head -n 13. Aprilo sul browser dell'host http://x.x.x.x:8080. Puoi vedere la pagina predefinita di Apache Tomcat.
OscarAkaElvis

1
Non sono riuscito ad accedere all'app Web nel container senza mappare la porta utilizzando -p
bilal.haider

22

Usa l' --formatopzione per ottenere solo l'indirizzo IP invece di informazioni sul contenitore intero:

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>

4
Nell'host Windows utilizzare virgolette doppie invece di virgolette singole. Ad esempio, sudo docker inspect --format "{{.NetworkSettings.IPAddress}}" <CONTAINER ID or NAME> Riferimento: link
Vineet Sajwan

1
nuovo formato di informazioni sul contenitore qui
Igor

18

Per i moderni motori Docker utilizzare questo comando:

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

e per i motori più vecchi utilizzare:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

Come accennato e collegato nel commento di @sanyash nell'area OP originale.
Jesse Chisholm

Errore di analisi del modello: modello:: 1: azione non
chiusa

11

se vuoi ottenerlo direttamente all'interno del contenitore, puoi provare

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

5

Puoi avviare il tuo container con la bandiera -P. Questo "assegna" una porta casuale alla porta esposta della tua immagine.

Con docker port <container id>puoi vedere la porta scelta a caso. L'accesso è quindi possibile tramite localhost:port.



-2

Non è possibile accedere all'IP della finestra mobile dall'esterno di quella macchina host. Se il tuo browser è su un'altra macchina, meglio mappare la porta host alla porta container passando -p 8080:8080per eseguire il comando.

Passando -pè possibile mappare la porta host alla porta container e un proxy è impostato per inoltrare tutto il traffico per detta porta host alla porta container designata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.