TL; DR Sprawdź tryb sieciowy swojego hosta VirtualBox - powinno tak być, bridgedjeśli chcesz, aby maszyna wirtualna (i hostowany przez nią kontener Docker) była dostępna w sieci lokalnej.
Wygląda na to, że nie wiesz, z którym hostem się połączyć, aby uzyskać dostęp do aplikacji przez HTTP. Tak naprawdę nie sprecyzowałeś, jaka jest twoja konfiguracja - zamierzam zgadnąć, na podstawie faktu, że masz w swoich tagach „Windows” i „VirtualBox”.
Zgaduję, że masz Dockera działającego na jakimś smaku Linuksa działającego w VirtualBox na hoście Windows. Oznaczę adresy IP następująco:
D = adres IP kontenera Docker
L = adres IP hosta Linux działającego w VirtualBox
W = adres IP hosta Windows
Gdy uruchomisz aplikację Go na hoście Windows, możesz połączyć się z nią z http://W:8080/dowolnego miejsca w sieci lokalnej. Działa to, ponieważ aplikacja Go wiąże port 8080 na komputerze z systemem Windows i każdy, kto spróbuje uzyskać dostęp do portu 8080 pod adresem IP, Wzostanie połączony.
I tutaj sytuacja staje się bardziej skomplikowana:
VirtualBox, podczas konfigurowania maszyny wirtualnej (VM), może skonfigurować sieć w jednym z kilku różnych trybów. Nie pamiętam, jakie są różne opcje, ale ta, którą chcesz, jest bridged. W tym trybie VirtualBox łączy maszynę wirtualną z siecią lokalną, tak jakby była maszyną samodzielną w sieci, tak jak każda inna maszyna podłączona do sieci. Wbridged trybie maszyna wirtualna pojawia się w sieci jak każda inna maszyna. Inne tryby ustawiają rzeczy inaczej i urządzenie nie będzie widoczne w Twojej sieci.
Tak więc, zakładając, że poprawnie skonfigurujesz sieć dla hosta systemu Linux ( bridged), host systemu Linux będzie miał adres IP w sieci lokalnej (np. 192.168.0.x) i będziesz mieć dostęp do kontenera Docker pod adresem http://L:8080/.
Jeśli host Linux jest ustawiona na tryb inny niż pewnym bridged, to może być w stanie uzyskać dostęp z hosta systemu Windows, ale to będzie zależeć od trybu dokładnie to, co jest w.
EDYCJA - na podstawie poniższych komentarzy wygląda na to, że sytuacja, którą opisałem powyżej, jest poprawna.
Cofnijmy się trochę: oto jak działa Docker na moim komputerze (Ubuntu Linux).
Wyobraź sobie, że uruchomienie tego samego polecenia mieć: docker run -p 8080:8080 dockertest. To powoduje uruchomienie nowego kontenera na podstawie dockertestobrazu i przekazanie (połączenie) portu 8080 na hoście Linux (mój komputer) do portu 8080 w kontenerze. Docker konfiguruje własną sieć wewnętrzną (z własnym zestawem adresów IP), aby umożliwić demonowi Dockera komunikację i umożliwić komunikację kontenerów ze sobą. Zasadniczo to, co z tym robisz, -p 8080:8080to połączenie wewnętrznej sieci Dockera z siecią „zewnętrzną” - tj. karta sieciowa hosta - na określonym porcie.
Ze mną do tej pory? OK, teraz cofnijmy się o krok i spójrzmy na twój system. Na Twoim komputerze działa system Windows - Docker nie działa (obecnie) w systemie Windows, więc narzędzie, którego używasz, skonfigurowało hosta systemu Linux na maszynie wirtualnej VirtualBox. Kiedy robisz to docker runw swoim środowisku, dzieje się dokładnie to samo - port 8080 na hoście Linux jest podłączony do portu 8080 w kontenerze. Duża różnica polega na tym, że twój host Windows nie jest hostem Linuksa, na którym działa kontener, więc jest tu kolejna warstwa i komunikacja w tej warstwie, w której napotykasz problemy.
Potrzebujesz jednej z dwóch rzeczy:
aby połączyć port 8080 na VM VirtualBox z portem 8080 na hoście Windows, tak jak podłączasz kontener Docker do portu hosta.
aby połączyć maszynę wirtualną VirtualBox bezpośrednio z siecią lokalną za pomocą bridged trybie sieciowym, który opisałem powyżej.
Jeśli wybierzesz pierwszą opcję, będziesz mógł uzyskać dostęp do kontenera, w http://W:8080którym Wznajduje się adres IP lub nazwa hosta systemu Windows. Jeśli wybierzesz drugą opcję, dostęp do kontenera będzie można uzyskać pod adresemhttp://L:8080 którym Lznajduje się adres IP lub nazwa hosta maszyny wirtualnej z systemem Linux.
To wszystko wyjaśnienie wyższego poziomu - teraz musisz dowiedzieć się, jak zmienić konfigurację maszyny wirtualnej VirtualBox. I tutaj nie mogę ci naprawdę pomóc - nie wiem, jakiego narzędzia używasz do zrobienia tego wszystkiego na komputerze z systemem Windows i wcale nie jestem zaznajomiony z używaniem Dockera w systemie Windows.
Jeśli możesz dostać się do okna konfiguracji VirtualBox, możesz wprowadzić zmiany opisane poniżej. Istnieje również klient wiersza poleceń, który modyfikuje maszyny wirtualne, ale nie jestem z tym zaznajomiony.
W przypadku bridgedtrybu (a to naprawdę jest najprostszy wybór), wyłącz maszynę wirtualną, kliknij przycisk „Ustawienia” u góry i zmień tryb sieci na bridged, a następnie uruchom ponownie maszynę wirtualną i gotowe. Maszyna wirtualna powinna odebrać adres IP w sieci lokalnej za pośrednictwem protokołu DHCP i powinna być widoczna dla innych komputerów w sieci pod tym adresem IP.