Docker节点JS安装
我是全新的docker工人,我试图按照他们列出的节点js教程: https : //docs.docker.com/examples/nodejs_web_app/
我按照这个教程,一切似乎很好,直到testing部分,我不能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'
不知道如果我对某事感到困惑或者如何解决这个问题,有什么想法?
这是解决scheme:
-
像这样运行你的应用程序:
docker run --rm -i -t -p 49160:8080 <your username>/centos-node-hello
一个输出应该说是监听端口8080.这意味着应用程序正在运行
-
打开另一个docker CLIterminal并键入:
docker-machine ls
你会看到IP地址和端口。 例如:
192.168.99.100:<some-number>
-
转到浏览器并inputIP地址和导出的端口号。
在这种情况下,
192.168.99.100:49160
,你的网站应该上来。
希望能帮助到你。
我遇到了同样的问题,并发现这是由于boot2docker
没有将我的本地主机转发到运行Docker的虚拟机。
找出运行Docker的虚拟机的IP,如下所示:
$ boot2docker ip
你会看到如下输出:
$ 192.168.99.102
并随着打印输出给你,curl你指定的IP端口。 例如:
$ curl -i 192.168.99.102:49160
如果您使用Mac OS X并使用Docker Toolbox安装了docker,则可以使用:
curl $(docker-machine ip default):49160
我可以告诉你至less如何解决这个问题。
首先检查日志,你需要容器ID来做到这一点。 你使用docker ps
得到容器的id
运行docker <id> logs
查看日志。 有可能你的命令返回一个错误。
如果你想仔细看看,你可以在容器上启动一个BASH shell。 运行这个命令docker exec -it <id> bash
,这会给你一个容器上的shell来排除故障。 shell是容器的相同实例,因此您可以排查正在运行的服务。
点击给定的命令finddocker-machine的IP地址
$ docker-machine ls
输出将如下所示:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS default * virtualbox Running tcp://192.168.99.100:2376 v1.10.3
现在从主机运行你的应用程序:
$ curl -i 192.168.99.100:49160