[英]Problem acessing server on docker container
我正在嘗試從本網站的示例中構建和運行 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 上的服務器。
怎么了?
似乎至少有兩件事是錯誤的:
所以,可能是這些變化(未經測試):
在您的代碼中:
www.listen(8080, "0.0.0.0");
在您的 docker 命令中:
docker run nsj -p 8080:8080
請注意,在Dockerfile
中使用EXPOSE 8080
實際上不會暴露任何東西。 它只是在 docker 引擎的元數據中“標記”此端口,並且適用於兩個文檔(因此閱讀Dockerfile
的人知道它的作用)和檢查 Z05B6053C41A2130AFD4E4E66FC3B158BDA 引擎的工具。
從參考文獻中引用:
EXPOSE 指令實際上並不發布端口。 它充當構建映像的人和運行容器的人之間的一種文檔類型,關於打算發布哪些端口
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.