2015-08-17 2 views
11

Sono nuovo di zecca per finestra mobile e sto tentando di seguire un'esercitazione nodo js che hanno elencato: https://docs.docker.com/examples/nodejs_web_app/Docker Nodo JS installazione

seguo questo tutorial e tutto sembra funzionare grande fino a quando la sostanza da analizzare e posso 'arricciare alla porta specificata.

$ curl -i localhost:49160 
curl: (7) Failed to connect to localhost port 49160: Connection refused 

$ docker ps 
CONTAINER ID  IMAGE       COMMAND    CREATED    STATUS    PORTS      NAMES 
21e727bc5a7d  username/docker-test "node /src/index.js" 13 minutes ago  Up 13 minutes  0.0.0.0:49160->8080/tcp gloomy_heisenberg 
$ docker logs 21e727bc5a7d 
Running on localhost:8080 

$ docker exec -it 21e727bc5a7d bash 
[[email protected] /]# netstat -tulpn 
Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1/node' 

Non so se sono confuso su qualcosa o su come risolvere questo, qualche idea?

+1

Lo stai usando su Linux o su boot2docker? – R0MANARMY

+0

@ R0MANARMY Sto eseguendo l'installazione sul mio Mac e ho seguito le istruzioni nel collegamento verbatim. Si sta avviando sopra un'immagine di centos. Non sono sicuro di aver risposto alla tua domanda ma, come ho detto, sono completamente nuovo per la finestra mobile, quindi potrei essere confuso su molte cose ad esso associate. Non ho mai eseguito alcun comando boot2docker e so che sto eseguendo qualcosa su virtualbox. La virtualbox dice che il sistema operativo è Linux ma menziona boot2docker nella porta SATA. – user1200387

+0

Sembra che boo2docker non stia inoltrando correttamente le richieste 'localhost' al vm docker. Si può confermare che ottenendo l'indirizzo IP di boo2docker vm dalla casella virtuale e provando ad accedere al sito Web del nodo su * http: // : 49160 *. Se ottieni una risposta, è solo che localhost non è stato inoltrato alla tua VM, in caso contrario, allora è qualcos'altro. – R0MANARMY

risposta

9

Questa è la soluzione:

  1. Run si domanda come questa:

    docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello

    Un'uscita dovrebbe venire dicendo in ascolto sulla porta 8080. Ciò significa che l'applicazione è in esecuzione

  2. Aprire un altro terminale CLI di una finestra mobile e digitare:

    docker-machine ls

    vedrete e l'indirizzo IP e una porta. Esempio: 192.168.99.100:<some-number>

  3. Passare a un browser e digitare l'indirizzo IP e il numero di porta esportato.

    In questo caso, 192.168.99.100:49160, e il tuo sito web dovrebbe accendersi.

Spero che sia d'aiuto.

+0

Nel tuo caso il tuo comando di marcia sarà esecuzione docker --rm -i -t -p 49160: 8080 username/docker-test –

+0

Cos'altro posso fare, quando questo non risolve il mio problema? C'è qualcosa nell'app-node in realtà che ho fatto di sbagliato? – PDXIII

2

Posso dirti come risolvere questo problema almeno.

Prima controlla i registri, è necessario l'id del contenitore per farlo. Si ottiene l'ID del contenitore utilizzando docker ps

Eseguire docker <id> logs per visualizzare i registri. È possibile che il tuo comando abbia restituito un errore.

Se si desidera esaminare più da vicino, è possibile avviare una shell BASH sul contenitore. Esegui questo comando docker exec -it <id> bash e questo ti darà una shell sul contenitore per la risoluzione dei problemi. La shell è la stessa istanza del contenitore in modo da poter risolvere il servizio in esecuzione.

+0

Grazie per la tua risposta, i registri hanno visualizzato esattamente ciò che il tutorial ha detto che avrebbe "In esecuzione su http: // localhost: 8080". Quando accedo al contenitore reale e controllo i processi in esecuzione, sembra corretto: [root @ 21e727bc5a7d /] # netstat -tulpn Connessioni Internet attive (solo server) Proto Recv-Q Send-Q Indirizzo locale Indirizzo esterno Stato PID/Nome programma tcp 0 0 0.0.0.0:8080 0.0.0.0:* ASCOLTA 1/nodo. C'è qualche firewall che potrebbe causare problemi? – user1200387

3

Se si utilizza Mac OS X ed è stato installato finestra mobile utilizzando Docker Toolbox, è possibile utilizzare:

dato comando
curl $(docker-machine ip default):49160 
2

Hit per trovare l'indirizzo IP della finestra mobile macchina

$ docker-machine ls 

L'uscita sarà come :

NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER ERRORS 
default *  virtualbox Running tcp://192.168.99.100:2376   v1.10.3 

Ora eseguire l'applicazione dal computer host come :

$ curl -i 192.168.99.100:49160 
6

ho sperimentato lo stesso problema e scoperto che era a causa di boot2docker non inoltrare il mio localhost alla macchina virtuale in cui è in esecuzione Docker.

Scopri l'IP del VM in esecuzione Docker in questo modo:

$ boot2docker ip 

Vedrai output come:

$ 192.168.99.102 

E con la stampa ti dà, arricciare i porta specificata quell'IP. Ad esempio:

$ curl -i 192.168.99.102:49160