Docker 节点 JS 安装

Docker Node JS Installation

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

我按照本教程进行操作,在测试部分之前一切似乎都很好,但我无法 curl 到指定的端口。

$ 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'

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

我至少可以告诉你如何解决这个问题。

首先检查日志,您需要容器 ID 才能执行此操作。您使用 docker ps

获取容器的 ID

运行 docker <id> logs 查看日志。您的命令可能返回错误。

如果您想仔细查看,可以在容器上启动 BASH shell。 运行 这个命令 docker exec -it <id> bash 会给你一个 shell 在容器上进行故障排除。 shell 是容器的同一个实例,因此您可以对 运行 服务进行故障排除。

这是解决方案:

  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,您的网站应该会出现。

希望对您有所帮助。

如果您正在使用 Mac OS X 并且已经使用 Docker 工具箱安装了 docker,您可以使用:

    curl $(docker-machine ip default):49160

Hit given command to find IP address of docker-machine

$ docker-machine ls

The output will be like :

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

Now run your application from host machine as :

$ curl -i 192.168.99.100:49160

我遇到了同样的问题,发现这是由于 boot2docker 没有将我的 localhost 转发到 Docker 是 [=26] 的虚拟机=].

找出虚拟机的 IP 运行 Docker 像这样:

$ boot2docker ip

您会看到如下输出:

$ 192.168.99.102

在它给你的打印输出中,卷曲你在该 IP 上的指定端口。例如:

$ curl -i 192.168.99.102:49160