Sto usando Docker per Mac. Sto eseguendo un microservizio basato su nodejs in un contenitore Docker. Voglio testare il microservizio del nodo tramite il browser. Come ottenere l'indirizzo IP del container Docker in esecuzione?
Sto usando Docker per Mac. Sto eseguendo un microservizio basato su nodejs in un contenitore Docker. Voglio testare il microservizio del nodo tramite il browser. Come ottenere l'indirizzo IP del container Docker in esecuzione?
Risposte:
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.1
e il tuo primo contenitore dovrebbe essere 172.17.0.2
se 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>
localhost
:)
http://172.17.0.2:anyPort
dall'host. Ovviamente se vuoi accedervi usando localhost sull'host, devi mappare le porte. Vedrà cosa vuole l'OP.
docker run --name struts --rm -i tomcat
2. Ottieni l'ip del tuo container (se ne hai solo uno): docker inspect struts | grep '"IPAddress"' | head -n 1
3. Aprilo sul browser dell'host http://x.x.x.x:8080
. Puoi vedere la pagina predefinita di Apache Tomcat.
Usa l' --format
opzione per ottenere solo l'indirizzo IP invece di informazioni sul contenitore intero:
sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>
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
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
Per il mio caso, di seguito ha funzionato su Mac :
Non sono riuscito ad accedere agli IP del contenitore direttamente su Mac. Devo usare localhost
con il port forwarding, ad esempio se la porta è 8000, allorahttp://localhost:8000
Vedi https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
La risposta originale era da: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
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:8080
per 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.