Używam Dockera dla komputerów Mac. Uruchamiam mikrousługę opartą na nodejs w kontenerze Docker. Chcę przetestować mikrousługę węzła za pośrednictwem przeglądarki. Jak uzyskać adres IP działającego kontenera Docker?
docker
containers
docker-for-mac
user3067875
źródło
źródło
Odpowiedzi:
Jeśli nie chcesz mapować portów z hosta do kontenera, możesz uzyskać bezpośredni dostęp do adresu IP docker range dla kontenera. Ten zakres jest domyślnie dostępny tylko z Twojego hosta. Możesz sprawdzić dane sieci kontenerów, wykonując:
Prawdopodobnie lepiej jest filtrować:
Zwykle domyślny zakres adresów IP dockera to
172.17.0.0/16
. Twój host powinien być,172.17.0.1
a pierwszy kontener powinien być,172.17.0.2
jeśli wszystko jest w porządku i nie określono żadnych specjalnych opcji sieciowych.EDYTUJ Kolejny bardziej elegancki sposób korzystania z funkcji dockera zamiast „sztuczek bash”:
źródło
localhost
:)http://172.17.0.2:anyPort
hosta. Oczywiście, jeśli chcesz uzyskać do niego dostęp za pomocą hosta lokalnego na hoście, musisz zmapować porty. Zobaczy, czego chce PO.docker run --name struts --rm -i tomcat
2. Pobierz adres IP swojego kontenera (jeśli masz tylko jeden):docker inspect struts | grep '"IPAddress"' | head -n 1
3. Otwórz go w przeglądarce hostahttp://x.x.x.x:8080
. Możesz zobaczyć domyślną stronę Apache Tomcat.Użyj
--format
opcji, aby uzyskać tylko adres IP zamiast całej informacji o kontenerze:źródło
W przypadku nowoczesnych silników dokowanych użyj tego polecenia:
a dla starszych silników użyj:
źródło
jeśli chcesz uzyskać go bezpośrednio w pojemniku, możesz spróbować
źródło
Możesz rozpocząć swój kontener flagą
-P
. To „przypisuje” losowy port do odsłoniętego portu obrazu.Za pomocą
docker port <container id>
można zobaczyć losowo wybrany port. Dostęp jest wtedy możliwy przezlocalhost:port
.źródło
W moim przypadku poniżej działało na komputerze Mac :
Nie mogłem uzyskać dostępu do adresów IP kontenerów bezpośrednio na komputerze Mac. Muszę użyć
localhost
z przekierowaniem portów, np. Jeśli port to 8000, tohttp://localhost:8000
Zobacz https://docs.docker.com/docker-for-mac/networking/#known-limitations-use-cases-and-workarounds
Oryginalna odpowiedź była z: https://github.com/docker/for-mac/issues/2670#issuecomment-371249949
źródło
Nie możesz uzyskać dostępu do adresu IP stacji dokującej spoza tego komputera głównego. Jeśli twoja przeglądarka znajduje się na innym komputerze, lepiej zamapuj port hosta na port kontenera, przekazując
-p 8080:8080
polecenie uruchomienia.Przekazywanie
-p
można zmapować port hosta na port kontenera, a serwer proxy jest ustawiony tak, aby przekazywał cały ruch z tego portu hosta do wyznaczonego portu kontenera.źródło