Docker Toolbox - Localhost funktioniert nicht


95

Ich verwende Docker Toolbox, weil ich kein Hyper-V auf meinem Computer habe, da es nicht Windows 10 Pro ist. Alles scheint gut zu funktionieren, aber wenn ich versuche, meinen Browser 0.0.0.0:80aufzurufen, wird mir immer Folgendes zurückgegeben: Diese Site kann nicht erreicht werden

Aber wenn ich den Befehl ausführe: docker container psIch erhalte Folgendes: Das 0.0.0.0:80->80/tcpbedeutet, dass diese Adresse funktionieren sollte. Ich habe nach Stackoverflow- und Github-Problemen gesucht. Jetzt stecke ich fest.

Vermisse ich etwas

Danke, Mark

BEARBEITEN:

Mit docker-machine ip defaultgibt mich zurück 192.168.99.100. Ich führe das auf Port 80 aus. Ich erhalte immer noch das gleiche Ergebnis, außer dass die Adresse zur Container-ID wird:https://fd677edg12

Ich führe diesen Befehl auf cmd aus, um mein ipv4 zu finden : cmd /k ipconfig /all. Setzen Sie das Ergebnis mit dem Port und es gibt dasselbe zurück:https://fd677edg12


1
0.0.0.0 ist keine tatsächliche Adresse. Dies bedeutet, dass der Port an alle Host-Schnittstellen des Dockers (Ihren Windows-Computer) gebunden war. Versuchen Sie localhost: 80 oder welche IP-Adresse Ihr Computer auch hat: 80
fvu

@fvu Ich bekomme immer noch "Diese Seite kann nicht erreicht werden". Ich habe es auch versucht. docker-machine default ip -> 192.168.99.100Also habe ich dies in die Adresse eingetragen: 192.168.99.100:80Ich bekomme immer noch das gleiche Ergebnis.
Mark

1
Wenn Sie umgeleitet werden, ist Ihre App defekt. Angenommen, Docker läuft auf demselben Computer, sollten Sie in der Lage sein, localhost: 80
user2105103

Antworten:


172

Die Docker Toolbox bietet nicht so viele Annehmlichkeiten wie Docker für Windows, aber Sie verwenden sie korrekt, da Sie die Home Edition verwenden.

In der Toolbox wird localhostund wird 192.168.99.100standardmäßig nichts angezeigt, da in VirtualBox eine Linux-VM ausgeführt wird.

Also wenn du rennst docker run -p 80:80 nginx

(Beachten Sie, dass ich einen Port veröffentlichen musste, um diesen Port 192.168.99.100abzuhören.)

Dann http://192.168.99.100sollte es funktionieren.


Danke für die Antwort. Ich folge deinen Schritten, außer hinzugefügt docker run -p 80:80 -d nginx. Ich gehe zur Adresse und sie leitet mich weiter https://dev/. Wieder heißt es, dass die Site nicht erreichbar ist. Ich wollte auch überprüfen, ob ich etwas in der hostsDatei habe (obwohl ich weiß, dass es kein localhost ist). Ich habe dort alles kommentiert.
Mark

Nach mehreren Versuchen habe ich es endlich zum Laufen gebracht. Leider bin ich mir nicht sicher, was das Problem war.
Mark

1
Bonusinfo: Die Docker Toolbox (verwendet in Windows 7, 8, 8.1 und 10 Home) ist eigentlich nur ein Startskript, das sich um docker-machinecli dreht. Mit können Sie docker-machine --helpsehen, was Sie tun können, um die VirtualBox-VM zu verwalten (oder weitere zu erstellen).
Bret Fisher

60

Ich hatte anfangs einige Probleme beim Zugriff auf meine Anwendungen bei localhost: 8080, während ich DockerToolBox und OracleVM VirtualBox verwendete.

In VirtualBox:

  1. Klicken Sie auf die entsprechende Maschine (wahrscheinlich die mit "Standard" bezeichnete).
  2. die Einstellungen
  3. Netzwerk> Adapter 1> Erweitert> Portweiterleitung
  4. Klicken Sie auf "+", um eine neue Regel hinzuzufügen
  5. Host-Port 8080& Gast-Port einstellen 8080; Stellen Sie sicher, dass Host-IP und Gast-IP leer sind

Führen Sie den folgenden Befehl aus:

docker run -p 8080:8080 ${image_id}

Aufgrund der CORS-Einrichtung auf der Remote-API muss ich als localhost: 8080 ausgeführt werden. So toll, es ist so einfach, danke!
Phazei

1
Tolle. Überall zu sagen, dass es nicht möglich ist, aber hier ist es.
SuperPhreshHackerKid

Stellen Sie außerdem sicher, dass Sie nichts mit anderen Dingen vermasseln, die diesen Port bereits abhören, oder mit localhost / 127.0.0.1-Einträgen in Ihrer Hosts-Datei ( C:\Windows\System32\drivers\etc\hosts) - ich musste beide überprüfen, bevor es für mich funktionierte ;-)
msa

Arbeitete wie Charme!
Daggie Blanqx - Douglas Mwangi

42

Ich folgte dem Docker für Windows-Tutorial in https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell und blieb in Schritt 6 stecken, als ich nginx im Webbrowser testete . Anscheinend hatte ich ein ähnliches Problem, da ich auch Windows Home verwende und kein Hyper-V habe. Meine Problemumgehung ist ganz einfach:

  1. Überprüfen Sie Ihre Docker-IP-Standardeinstellung

$ docker-machine ip default

192.168.99.100

  1. Wechseln Sie zu Oracle Virtual Machine, um die Portweiterleitung festzulegen. Stellen Sie sicher, dass die Netzwerkeinstellung NAT ist, und fügen Sie die Portweiterleitung hinzu. Host IP: 127.0.0.1, Gast IP: 192.168.99.100, Port alle auf 80 wie folgt

  2. Versuchen Sie es erneut mit Ihrem Browser und führen Sie http: // localhost oder http://127.0.0.1 aus (kann auch den Port 80 hinzufügen). Es sollte laufen.

Die Sache ist, dass die Nginx-IP innerhalb der Docker Virtual Machine zugänglich sein soll, so dass wir diese Port-Forwading-Einstellung benötigen, um direkt im Browser des Host-Rechners darauf zugreifen zu können


2
Ich brauchte einen Fall, in dem die HOST:CONTAINERPorts unterschiedlich sind, z docker run --detach --publish 8081:80 --name webserver nginx. Es wurde festgestellt, dass ich in diesem Fall nur den HOSTPort weiterleiten musste , dh in den VirtualBox-Einstellungen Host IP=127.0.0.1. Host Port=8081;; Guest IP=192.168.99.100;; Guest Port=8081, nicht 80wie ich vorher angenommen habe. Sieht aus wie auf meinem Windows 7-Computer mit Docker Toolbox. Docker leitet vom Container-Port 80an 192.168.99:8081und ich leite von 192.168.99:8081an weiter, localhost:8081da 192.168.99:8081im Webbrowser nichts angezeigt wird.
and1er

12

Sie können localhostanstelle von '192.168.99.100' die folgenden Anweisungen befolgen:

Schritt # 01:

docker-machine ip default

Sie sehen die Standard-IP

Schritt # 02:

docker-machine stop default

Schritt # 03:

  1. Öffnen Sie VirtualBox Manager (von den Startprogrammen in Windows suchen nach VirtualBox Manager)
  2. Wählen Sie Ihr Docker Machine VirtualBox-Image aus (z. B. Standard).
  3. Öffnen Sie Einstellungen -> Netzwerk -> Erweitert -> Portweiterleitung
  4. Fügen Sie Ihren App-Namen, den gewünschten Host-Port und Ihren Gast-Port hinzu i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Schritt 04: Jetzt können Sie Ihre Docker-Maschine starten, indem Sie Folgendes ausführen:

docker-machine start default

Starten Sie dann einfach Ihren Docker-Container und Sie können über localhost darauf zugreifen.

Schauen Sie hier für Details.


2

localhostSie können die VirtualBox-CLI verwenden, um die erwarteten Ports zuzuordnen, anstatt die Docker-Computer-IP direkt zu treffen.

Wenn die Docker-Machine-VM (hier genannt default) ausgeführt wird, fügen Sie folgende Regeln hinzu und löschen Sie sie:

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

Wenn die VM nicht ausgeführt wird oder Sie vor dem Ändern anhalten möchten:

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

Wo das Format der Portweiterleitungsregel ist [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>.

Beachten Sie, dass Sie in VirtualBox dem Host- Port von Docker Map zuordnen möchten , nicht dem internen Container-Port. Sie ordnen Host -> VM zu, dann ordnet Docker VM -> Container zu.

Siehe die VirtualBox-Dokumente .


1

Dies ist eine weitere einfache Möglichkeit, die Eingabe der IP-Adresse 192.168.99.100 zu vermeiden. Gehen Sie zu C:\Windows\System32\drivers\etc\hostsund fügen Sie am Ende der Datei hinzu:

192.168.99.100 docker.awesome oder einen beliebigen Namen nach Ihren Wünschen.

Speichern Sie die Datei (Sie müssen über Administratorrechte verfügen. Klicken Sie daher mit der rechten Maustaste auf die Datei und führen Sie sie als Administrator aus, um sie beim Bearbeiten speichern zu können.)

Gehen Sie zu Ihrem gewählten Domainnamen, docker.awesome: 8080 in diesem Fall und dort haben Sie es.


-1

Nach vielen Versuchen konnte ich dieses Bulletin Board bekommen.

  1. Der Docker-Run-Befehl, den ich verwendet habe - Docker-Run -p 4680: 8080 - Name BB Bulletin Board: 1.0 Hier ist 4680 die Localhost-Portnummer. 8080 ist die Container-Portnummer, der Port, an dem der Container empfangsbereit ist. Diese Portnummer wird im Befehl EXPOSE in der Docker-Datei angegeben.

  2. Gehen Sie dann zum Webbrowser und geben Sie 192.168.99.100:4680 ein

Hier ist 192.168.99.100 die IP-Adresse des Docker-Computers (Befehl verwenden -> IP des Docker-Computers)

  1. Danach sollte Ihre Browserseite geöffnet werden für -

Geben Sie hier die Bildbeschreibung ein

Hoffe das hilft euch allen !!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.