Docker Toolbox - Localhost non funziona


100

Quindi sto usando Docker Toolbox perché non ho Hyper-V sulla mia macchina poiché non è Windows 10 pro. Tutto sembra funzionare bene, ma quando provo ad andare sul mio browser 0.0.0.0:80mi ritorna sempre: questo sito non è raggiungibile

Ma quando eseguo il comando: docker container psottengo quanto segue: 0.0.0.0:80->80/tcpsignifica che questo indirizzo dovrebbe funzionare. Ho cercato tra stackoverflow e problemi di github. Adesso sono bloccato.

Mi sto perdendo qualcosa?

Grazie, Mark

MODIFICARE:

L'utilizzo docker-machine ip defaultmi restituisce 192.168.99.100. Lo eseguo sulla porta 80. Ottengo ancora lo stesso risultato tranne che l'indirizzo diventa l'ID del contenitore:https://fd677edg12

Corro che comando sul cmd di trovare il mio ipv4: cmd /k ipconfig /all. Metti il ​​risultato con la porta e restituisce la stessa cosa:https://fd677edg12


1
0.0.0.0 non è un indirizzo effettivo, significa che la porta era collegata a tutte le interfacce host della finestra mobile (il tuo computer Windows). Prova localhost: 80 o qualsiasi indirizzo IP del tuo computer: 80
fvu

@fvu ricevo ancora "questo sito non può essere raggiunto". Ho anche provato docker-machine default ip -> 192.168.99.100Quindi ho inserito questo nell'indirizzo: 192.168.99.100:80ottengo ancora lo stesso risultato.
Marco

1
Se vieni reindirizzato, è la tua app che non funziona. Supponendo che Docker sia in esecuzione sullo stesso computer, dovresti essere in grado di localhost: 80
user2105103

Risposte:


179

Docker Toolbox non ha tante comodità come Docker per Windows, ma sei corretto nell'usarlo poiché sei nell'edizione Home.

In Toolbox, nulla sarà localhoste lo sarà 192.168.99.100per impostazione predefinita, poiché esegue una VM Linux in VirtualBox.

Quindi se corri docker run -p 80:80 nginx

(nota che ho dovuto pubblicare una porta per 192.168.99.100ascoltare su quella porta)

Allora http://192.168.99.100dovrebbe funzionare.


Grazie per la risposta. Sto seguendo i tuoi passaggi tranne quelli aggiunti docker run -p 80:80 -d nginx. Vado all'indirizzo e mi reindirizza a https://dev/, di nuovo dice che il sito non può essere raggiunto. Volevo anche verificare se avevo qualcosa è il hostsfile (anche se so che non è localhost). Ho commentato tutto lì.
Marco

Dopo diversi tentativi, finalmente l'ho fatto funzionare. Purtroppo, non sono troppo sicuro di quale fosse il problema.
Marco

1
Informazioni bonus: Docker Toolbox (utilizzato in Windows 7, 8, 8.1 e 10 Home) è in realtà solo uno script di avvio avvolto attorno a docker-machinecli. Puoi usare docker-machine --helpper vedere cosa puoi fare per gestire la VM VirtualBox (o crearne altre).
Bret Fisher

64

Inizialmente ho avuto alcuni problemi con l'accesso alle mie applicazioni su localhost: 8080 durante l'utilizzo di DockerToolBox e OracleVM VirtualBox.

In VirtualBox:

  1. Fare clic sulla macchina appropriata (probabilmente quella con l'etichetta "predefinita")
  2. impostazioni
  3. Rete> Scheda 1> Avanzate> Port Forwarding
  4. Fare clic su "+" per aggiungere una nuova regola
  5. Imposta porta host 8080e porta ospite 8080; assicurati di lasciare vuoti l'IP host e l'IP ospite

Esegui il comando:

docker run -p 8080:8080 ${image_id}

A causa della configurazione CORS sull'API remota, devo eseguire come localhost: 8080. Così bello è così semplice, grazie!
phazei

1
Sorprendente. Ovunque dicendo che non si può fare ma eccolo qui.
superPhreshHackerKid

Inoltre, assicurati di non rovinare le cose con altre cose già in ascolto su questa porta o con le voci localhost / 127.0.0.1 nel tuo file hosts ( C:\Windows\System32\drivers\etc\hosts) - Ho dovuto controllare entrambe le cose prima che funzionasse per me ;-)
msa

Ha funzionato come un fascino!
Daggie Blanqx - Douglas Mwangi,

43

Stavo seguendo il tutorial di Docker per Windows in https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell e sono rimasto bloccato nel passaggio 6 durante il test di nginx nel browser web . Sembra che abbia affrontato un problema simile poiché uso anche Windows Home e non ho Hyper-V. La mia soluzione alternativa è abbastanza semplice:

  1. controlla il tuo IP Docker predefinito

$ docker-machine ip predefinito

192.168.99.100

  1. Vai a Oracle Virtual Machine per impostare il port forwarding. Assicurati che l'impostazione di rete sia NAT e aggiungi il port forwarding. IP host: 127.0.0.1, IP ospite: 192.168.99.100, porta tutta impostata su 80 in questo modo

  2. Riprova nel tuo browser ed esegui http: // localhost o http://127.0.0.1 (puoi aggiungere anche la porta 80). Dovrebbe funzionare.

Il fatto è che l'IP nginx deve essere accessibile all'interno della macchina virtuale docker, quindi abbiamo bisogno di quella impostazione di port forwading per accedervi direttamente nel browser della macchina host


2
Avevo bisogno di un caso in cui le HOST:CONTAINERporte sono diverse, ad es docker run --detach --publish 8081:80 --name webserver nginx. Trovato che in questo caso ho dovuto inoltrare HOSTsolo la porta, cioè nelle impostazioni di VirtualBox Host IP=127.0.0.1; Host Port=8081; Guest IP=192.168.99.100; Guest Port=8081, non 80come immaginavo prima. Sembra che nella mia macchina Windows 7 con Docker Toolbox Docker inoltri dalla porta del contenitore 80a 192.168.99:8081e io inoltro da 192.168.99:8081a localhost:8081perché 192.168.99:8081non mostra nulla nel browser web.
1er

13

Puoi utilizzare localhost"192.168.99.100" seguendo le istruzioni:

Passaggio n. 01:

docker-machine ip default

Vedrai l'IP predefinito

Passaggio n. 02:

docker-machine stop default

Passaggio # 03:

  1. Apri VirtualBox Manager (dai programmi di avvio in Windows cerca VirtualBox Manager)
  2. Seleziona la tua immagine VirtualBox della Docker Machine (es: default)
  3. Apri Impostazioni -> Rete -> Avanzate -> Port Forwarding
  4. Aggiungi il nome della tua app, la porta host desiderata e la porta guest i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80

Passaggio 04: ora sei pronto per avviare la tua Docker Machine eseguendo quanto segue:

docker-machine start default

Quindi avvia il tuo contenitore Docker e sarai in grado di accedervi tramite localhost.

Dai un'occhiata qui per i dettagli.


2

Per mappare i porti previsti localhost invece di colpire direttamente l'IP della macchina docker, è possibile utilizzare la CLI di VirtualBox.

Se la VM docker-machine (qui chiamata default) è in esecuzione, aggiungi ed elimina regole in questo modo:

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

Se la VM non è in esecuzione o si desidera arrestarla prima di modificarla:

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

Dove si trova il formato della regola di port forwarding [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport> .

Nota che in VirtualBox, vuoi mappare alla porta host della mappa Docker, non alla porta del contenitore interno. Stai mappando l'host -> VM, quindi Docker mappa la VM -> container.

Vedi i documenti di VirtualBox .


1

Questo è un altro modo semplice per evitare di digitare l'ip 192.168.99.100. Vai a C:\Windows\System32\drivers\etc\hostse aggiungi alla fine del file:

192.168.99.100 docker.awesome o qualsiasi nome di tuo gradimento.

Salvare il file (è necessario disporre dei diritti di amministratore, quindi assicurarsi di fare clic con il pulsante destro del mouse sul file ed eseguire come amministratore per poterlo salvare quando lo si modifica).

Vai al nome di dominio scelto, docker.awesome: 8080 in questo caso e il gioco è fatto.


0

Dopo molte prove, sono riuscito a ottenere questa bacheca.

  1. Il comando docker run che ho usato - docker run -p 4680: 8080 --name bb bulletinboard: 1.0 Qui, 4680 è il numero di porta localhost. 8080 è il numero di porta del contenitore, la porta in cui il contenitore sarà in ascolto. Questo numero di porta è menzionato nel comando EXPOSE nel Dockerfile.

  2. Quindi, vai al browser web e digita 192.168.99.100:4680

Qui, 192.168.99.100 è l'indirizzo IP della macchina docker (usa il comando -> ip macchina docker)

  1. Successivamente, la pagina del browser dovrebbe aprirsi a:

inserisci qui la descrizione dell'immagine

Spero che questo ti aiuti tutti !!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.