我正在尝试从以下站点上的示例构建并运行docker映像:https://kubernetes.io/docs/tutorials/hello-minikube/
//server.js
var http = require('http');
var handleRequest = function(request, response) {
console.log('Received request for URL: ' + request.url);
response.writeHead(200);
response.end('Hello World!');
};
var www = http.createServer(handleRequest);
www.listen(8080);
//Dockerfile
FROM node:6.14.2
EXPOSE 8080
COPY server.js .
CMD node server.js
我使用命令
docker build -t nsj .
docker run nsj
它们运行时没有错误,但是我无法访问localhost:8080上的服务器。
怎么了?
答案 0 :(得分:2)
似乎至少有两件事是错误的:
因此,可能是这些变化(未经测试):
在您的代码中:
www.listen(8080, "0.0.0.0");
在您的docker命令中:
docker run nsj -p 8080:8080
请注意,您的EXPOSE 8080
中有Dockerfile
实际上并没有暴露任何东西。它只是在docker引擎的元数据中“标记”该端口,并且既用于文档(使读Dockerfile
的人知道它的作用)又用于检查docker引擎的工具。
引用reference:
EXPOSE指令实际上并未发布端口。它 充当构建者之间的一种文档类型 图片和运行容器的人,关于哪些端口是 打算出版