Docker Node JS安装

use*_*387 15 node.js docker boot2docker

我是docker的新手,我正在尝试按照他们列出的节点js教程:https://docs.docker.com/examples/nodejs_web_app/

我遵循这个教程,一切似乎工作得很好,直到测试部分,我不能卷曲到指定的端口.

$ 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
[root@21e727bc5a7d /]# 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'
Run Code Online (Sandbox Code Playgroud)

不确定我是否对某些事情感到困惑或如何解决这个问题,任何想法?

小智 12

这是解决方案:

  1. 像这样运行你的应用程序:

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

    输出应该说是侦听端口8080.这意味着应用程序正在运行

  2. 打开另一个docker CLI终端并键入:

    docker-machine ls

    您将看到IP地址和端口.例:192.168.99.100:<some-number>

  3. 转到浏览器并键入IP地址和导出的端口号.

    在这种情况下,192.168.99.100:49160您的网站应该会出现.

希望能帮助到你.


小智 6

我遇到了同样的问题,发现它是由于boot2docker没有将我的localhost转发到运行Docker的虚拟机.

找出运行Docker的VM的IP,如下所示:

$ boot2docker ip
Run Code Online (Sandbox Code Playgroud)

你会看到如下输出:

$ 192.168.99.102
Run Code Online (Sandbox Code Playgroud)

通过打印输出,它可以让您在该IP上卷曲您指定的端口.例如:

$ curl -i 192.168.99.102:49160
Run Code Online (Sandbox Code Playgroud)