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 是容器的同一个实例,因此您可以对 运行 服务进行故障排除。
这是解决方案:
运行你这样申请:
docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello
一个输出应该说监听端口 8080。
这意味着应用程序是运行
打开另一个 docker CLI 终端并输入:
docker-machine ls
您将看到 IP 地址和端口。示例:192.168.99.100:<some-number>
转到浏览器并输入 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
我是 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
运行 docker <id> logs
查看日志。您的命令可能返回错误。
如果您想仔细查看,可以在容器上启动 BASH shell。 运行 这个命令 docker exec -it <id> bash
会给你一个 shell 在容器上进行故障排除。 shell 是容器的同一个实例,因此您可以对 运行 服务进行故障排除。
这是解决方案:
运行你这样申请:
docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello
一个输出应该说监听端口 8080。 这意味着应用程序是运行
打开另一个 docker CLI 终端并输入:
docker-machine ls
您将看到 IP 地址和端口。示例:
192.168.99.100:<some-number>
转到浏览器并输入 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