无法通过Windows本地访问docker容器

我似乎无法访问我的任何运行docker集装箱。 最近的hello-world3是一个使用端口8080的节点应用程序。我有节点应用程序通过process.env.PORT在该端口上侦听。 我用npm启动脚本设置了PORT=8080 ,并用Docker文件EXPOSE 8080。 在我build立容器后,我指定一个端口。 在这种情况下8082通过docker run -p 8082:8080 hello-world3

从我的控制台看这个img我应该能够看到我的应用程序响应转到localhost:8082是啊?

在这里输入图像说明

我的docker文件

 FROM jkilbride/node-npm-alpine:8 WORKDIR /src COPY package.json . RUN npm install COPY . . EXPOSE 8080 CMD ["npm","start"] 

的package.json:

 { "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" 

}

index.js:

 const http = require('http'); const server = http.createServer((req,res) => { const data = { 'data': 'Hello World', 'hostname': require('os').hostname() }; res.writeHead(200, {'Content-Type': 'application/json'}) res.end(JSON.stringify(data)); }); server.listen(process.env.PORT, (err) => { if (err) return console.log(err); console.log('API is running on ' + process.env.PORT); }) 

要访问Windows Docker主机上的站点,您需要使用容器的IP地址(这是虚拟IP地址只对主机可见)(以及与发布的端口不同的容器公开的端口)主机正在侦听外部请求的位置):

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