如何在主机中运行本地服务器?

时间:2016-04-20 13:42:02

标签: node.js docker

我刚刚使用docker安装了nodejs,我运行了一个测试服务器:

docker exec -i -t my-running-app bash
root@46593eb5df5c:/usr/src/app# npm start
npm info it worked if it ends with ok
npm info using npm@2.15.1
npm info using node@v4.4.3
npm info prestart foo@
npm info start foo@

> foo@ start /usr/src/app
> node server.js

Server running at http://127.0.0.1:8000/

在docker镜像中,我正在暴露端口8000,但我不知道如何从主机中浏览容器内的节点服务器?

如果我只是浏览http://127.0.0.1:8000/我得到:

This site can’t be reached

127.0.0.1 refused to connect.

我在ubuntu 14.04上,那么,我该如何查看该套装服务器呢?

2 个答案:

答案 0 :(得分:0)

您需要将容器端口映射到主机端口:

docker exec -p 8000:3000
例如,

将8000容器端口映射到3000主机端口。

  

默认情况下,Docker容器可以与外界建立连接,但外部世界无法连接到容器。由于Docker服务器在启动时创建的主机上的iptables伪装规则,每个传出连接似乎都来自主机的一个IP地址。

Docker doc for binding Ports

答案 1 :(得分:0)

首先尝试将所有容器启动命令放到Dockerfile(你在其中构建docker镜像),即你需要HIGH(v1)并暴露端口8000,你应该添加到Dockerfile:

npm start

您需要使用端口映射启动应用程序实例:

EXPOSE 8000
CMD [ "npm", "start" ]

它将创建一个来自"外部"世界(public_port,可能是相同的 - 8000,或任何你需要的)停泊图像