无法通过windows localhost访问docker容器

时间:2017-09-25 00:43:00

标签: node.js windows docker npm containers

我似乎无法访问任何正在运行的docker容器。最新的hello-world3是一个使用端口8080的节点应用程序。我让节点应用程序通过process.env.PORT侦听该端口。我使用npm启动脚本设置os.makedirs("resized images") try: files = os.listdir(os.path.join(os.getcwd(),"source images")) except IOError: print('No folder found.') input('Enter any key to exit: ') exit() xDimension=dimensions[0] yDimension=dimensions[1] print(xDimension) print(yDimension) totalViews=0 for item in d: totalViews+=d[item] files.sort() for index, file in enumerate(files): path = os.path.join(os.getcwd(), "source images", file) img = Image.open(path) ratio=(d[index]/totalViews) print(ratio) print(str(index)) resizedX=int(math.ceil((xDimension*ratio))) resizedY=int(math.ceil((yDimension*ratio))) resized=img.resize((resizedX, resizedY)) resized.save("resized images/"+str(index)+".jpg", 'JPEG') #image 100 in source images becomes image 3 in resized images, making image 3 become image 24 ,使用docker文件设置I EXPOSE 8080。构建容器后,我指定一个端口。在这种情况下,80 PORT=8080

从我的控制台看这个img我应该能够通过访问localhost看到我的应用程序响应:8082是吗?

enter image description here

我的泊坞文件

docker run -p 8082:8080 hello-world3

package.json:

FROM jkilbride/node-npm-alpine:8

WORKDIR /src
COPY package.json .
RUN npm install
COPY . .
EXPOSE 8080

CMD ["npm","start"]

}

index.js:

{
  "name": "service",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start":"set PORT=8080 && node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"

3 个答案:

答案 0 :(得分:1)

在windows docker上运行vm。所以,当你执行localhost:8082时,你正在调用主机的localhost,即你的windows而不是在不同的ip上运行的docker vm。将localhost调用转发到运行docker的vm的一种方法是使用port forwarding

我希望你安装了virtualbox。请按照以下步骤操作:

  

打开虚拟框 - >在左侧边栏上选择vm运行docker(即   命名默认) - >点击上方栏上的设置按钮 - >选择   网络 - >选择高级 - >选择端口转发。

在这里,您可以输入规则将主机端口8082请求转发到8080访客端口。现在,当你执行localhost:8082时,它会将请求转发给8080的docker vm,这将转发到容器8080.

答案 1 :(得分:0)

要访问Windows Docker主机上的站点,您需要使用容器的IP地址发出请求 - 这是仅对主机可见的虚拟IP地址(如果容器与发布的不同,则显示容器公开的端口) port,主机正在侦听外部请求的地方):

参考 - https://blog.sixeyed.com/published-ports-on-windows-containers-dont-do-loopback/

答案 2 :(得分:0)

这似乎是由文件共享问题引起的。安装Docker时,文件共享服务似乎不起作用。然后,Docker无权访问本地卷和文件共享。

这篇文章详细介绍了如何使其正常运行。我会设置一个非常基本的节点应用程序,然后使用这些步骤来重现。

Dockerizing a node application

我能够使用以下链接启用我的基本节点应用程序。

How to solve windows blocking sharing between host and docker containers