Docker Toolbox - Localhost nie działa

101

Więc używam Docker Toolbox, ponieważ nie mam Hyper-V na moim komputerze, ponieważ nie jest to Windows 10 pro. Wygląda na to, że wszystko działa dobrze, ale kiedy próbuję przejść do przeglądarki 0.0.0.0:80, zawsze zwraca mnie: Ta strona nie jest dostępna

Ale kiedy uruchamiam polecenie: docker container psotrzymuję: 0.0.0.0:80->80/tcpco oznacza, że ​​ten adres powinien działać. Przeszukałem problemy związane ze stosem i githubem. Teraz utknąłem.

Czy coś mi brakuje?

Dzięki, Mark

EDYTOWAĆ:

Użycie docker-machine ip defaultzwraca mnie 192.168.99.100. Uruchamiam to na porcie 80. Nadal otrzymuję ten sam wynik, z wyjątkiem tego, że adres staje się identyfikatorem kontenera:https://fd677edg12

Biegnę, że na polecenie cmd, by znaleźć swoje IPv4: cmd /k ipconfig /all. Umieść wynik z portem, a zwróci to samo:https://fd677edg12

znak
źródło
1
0.0.0.0 nie jest rzeczywistym adresem, oznacza to, że port został powiązany ze wszystkimi interfejsami hosta dockera (komputerem z systemem Windows). Wypróbuj localhost: 80 lub
inny
@fvu Nadal otrzymuję komunikat „ta witryna nie jest dostępna”. Spróbowałem też, docker-machine default ip -> 192.168.99.100więc umieściłem to w adresie: 192.168.99.100:80nadal otrzymuję ten sam wynik.
Mark
1
Jeśli zostaniesz przekierowany - to Twoja aplikacja jest zepsuta. Zakładając, że docker jest uruchomiony na tym samym komputerze, powinieneś mieć możliwość lokalnego hosta: 80
user2105103

Odpowiedzi:

181

Docker Toolbox nie ma tylu udogodnień, co Docker dla Windows, ale masz rację w korzystaniu z niego, ponieważ korzystasz z wersji Home.

W Toolbox nic nie będzie localhosti nie będzie192.168.99.100 domyślnie, ponieważ działa maszyna wirtualna Linux w VirtualBox.

Więc jeśli uciekniesz docker run -p 80:80 nginx

(zauważ, że musiałem opublikować port dla 192.168.99.100 aby nasłuchiwać na tym porcie)

Wtedy http://192.168.99.100powinno działać.

Bret Fisher
źródło
Dzięki za odpowiedzi. Podążam za twoimi krokami, z wyjątkiem dodania docker run -p 80:80 -d nginx. Idę pod adres i przekierowuje mnie na https://dev/, znowu mówi, że strona nie jest dostępna. Chciałem też sprawdzić, czy mam cokolwiek to hostsplik (chociaż wiem, że nie jest to localhost). Skomentowałem tam wszystko.
Mark
Po kilku próbach w końcu udało mi się. Niestety, nie jestem pewien, w czym był problem.
Mark
1
Informacje o bonusach: Docker Toolbox (używany w Windows 7, 8, 8.1 i 10 Home) to tak naprawdę tylko skrypt startowy owinięty wokół docker-machineCLI. Możesz użyć, docker-machine --helpaby zobaczyć, co możesz zrobić, aby zarządzać maszyną wirtualną VirtualBox (lub utworzyć więcej).
Bret Fisher
64

Początkowo miałem kilka problemów z dostępem do moich aplikacji na localhost: 8080 podczas korzystania z DockerToolBox i OracleVM VirtualBox.

W VirtualBox:

  1. Kliknij odpowiednią maszynę (prawdopodobnie tę oznaczoną jako „domyślna”)
  2. Ustawienia
  3. Sieć> Karta 1> Zaawansowane> Przekierowanie portów
  4. Kliknij „+”, aby dodać nową regułę
  5. Ustaw port hosta 8080i port gościa 8080; pamiętaj, aby pozostawić adresy IP hosta i IP gościa puste

Uruchom polecenie:

docker run -p 8080:8080 ${image_id}
EJJ
źródło
Ze względu na konfigurację CORS na zdalnym API muszę działać jako localhost: 8080. Tak wspaniale, że to takie proste, dzięki!
phazei
1
Niesamowity. Wszędzie mówi się, że nie da się tego zrobić, ale oto jest.
superPhreshHackerKid,
Upewnij się również, że nie zepsułeś rzeczy z innymi rzeczami nasłuchującymi już na tym porcie lub wpisami localhost / 127.0.0.1 w twoim pliku hosts ( C:\Windows\System32\drivers\etc\hosts) - musiałem sprawdzić oba, zanim zadziałało ;-)
msa
Działało jak urok!
Daggie Blanqx - Douglas Mwangi
45

Śledziłem samouczek Dockera dla systemu Windows w https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell i utknąłem w kroku 6 podczas testowania nginx w przeglądarce internetowej . Wygląda na to, że napotkałem podobny problem, ponieważ używam również Windows Home i nie mam Hyper-V. Moje obejście jest dość proste:

  1. sprawdź domyślny adres IP stacji dokującej

$ docker-machine ip default

192.168.99.100

  1. Przejdź do Oracle Virtual Machine, aby ustawić przekierowanie portów. Upewnij się, że ustawienie sieciowe to NAT i dodaj przekierowanie portów. Adres IP hosta: 127.0.0.1, adres IP gościa: 192.168.99.100, wszystkie porty ustawione na 80 w ten sposób

  2. Spróbuj ponownie w przeglądarce i uruchom http: // localhost lub http://127.0.0.1 (można również dodać port 80). Powinien działać.

Chodzi o to, że adres IP nginx ma być dostępny w maszynie wirtualnej docker, więc potrzebujemy tego portu do ustawienia, aby uzyskać do niego dostęp bezpośrednio w przeglądarce hosta

nitya wijayanti
źródło
2
Potrzebowałem przypadku, gdy HOST:CONTAINERporty są różne, np docker run --detach --publish 8081:80 --name webserver nginx. Okazało się, że w tym przypadku musiałem przekierować HOSTtylko port, tj. W ustawieniach VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, nie 80tak , jak przypuszczałem wcześniej. Wygląda na to, że na moim komputerze z systemem Windows 7 z Docker Toolbox Docker przekazuje z portu kontenera 80do, 192.168.99:8081a ja przekazuję z 192.168.99:8081do, localhost:8081ponieważ 192.168.99:8081nic nie wyświetla w przeglądarce internetowej.
1er
13

Możesz użyć localhostzamiast „192.168.99.100”, postępując zgodnie z instrukcjami:

Krok # 01:

docker-machine ip default

Zobaczysz domyślny adres IP

Krok # 02:

docker-machine stop default

Krok 03:

  1. Otwórz VirtualBox Manager (z programów startowych w wyszukiwarce Windows VirtualBox Manager)
  2. Wybierz obraz VirtualBox maszyny Docker (np .: domyślny)
  3. Otwórz Ustawienia -> Sieć -> Zaawansowane -> Przekierowanie portów
  4. Dodaj nazwę aplikacji, żądany port hosta i port gościa i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Krok # 04: Teraz możesz uruchomić swoją maszynę Docker, wykonując następujące czynności:

docker-machine start default

Następnie po prostu uruchom swój kontener Docker, a będziesz mieć do niego dostęp przez localhost.

Zajrzyj tutaj, aby poznać szczegóły.

Bablu Ahmed
źródło
2

Aby zmapować oczekiwane porty localhost zamiast bezpośredniego uderzania w adres IP maszyny docker-machine, możesz użyć interfejsu wiersza polecenia VirtualBox.

Jeśli maszyna wirtualna docker-machine (nazywana tutaj default) jest uruchomiona, dodaj i usuń reguły w następujący sposób:

> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx

Jeśli maszyna wirtualna nie działa lub chcesz ją zatrzymać przed zmianą:

> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start

Gdzie jest format reguły przekierowania portów [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport> .

Zwróć uwagę, że w VirtualBox chcesz zmapować do hosta port mapy Docker, a nie na wewnętrzny port kontenera. Mapujesz hosta -> maszynę wirtualną, a następnie Docker mapuje maszynę wirtualną -> kontener.

Zobacz dokumentację VirtualBox .

James Irwin
źródło
2

To kolejny łatwy sposób na uniknięcie wpisywania adresu IP 192.168.99.100. Przejdź do C:\Windows\System32\drivers\etc\hostsi dodaj na końcu pliku:

192.168.99.100 docker.awesome lub dowolne imię, które Ci się podoba.

Zapisz plik (musisz mieć uprawnienia administratora, więc pamiętaj, aby kliknąć plik prawym przyciskiem myszy i uruchomić go jako administrator, aby móc go zapisać podczas edycji).

Idź do wybranej nazwy domeny, w tym przypadku docker.awesome: 8080 i gotowe .

Rasso
źródło
0

Po wielu próbach udało mi się zdobyć tę tablicę ogłoszeń.

  1. Polecenie docker run, którego użyłem - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Tutaj 4680 to numer portu hosta lokalnego. 8080 to numer portu kontenera, czyli port, na którym kontener będzie nasłuchiwał. Ten numer portu jest wymieniony w poleceniu EXPOSE w pliku Dockerfile.

  2. Następnie przejdź do przeglądarki internetowej i wpisz 192.168.99.100:4680

Tutaj 192.168.99.100 to adres IP maszyny docker (użyj polecenia -> docker-machine ip)

  1. Następnie strona przeglądarki powinna się otworzyć na -

wprowadź opis obrazu tutaj

Mam nadzieję, że to pomoże wam wszystkim !!

Ajay
źródło