簡體   English   中英

docker 容器上的服務器訪問問題

[英]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 上的服務器。

怎么了?

似乎至少有兩件事是錯誤的:

  1. 您需要 map docker 主機的端口
  2. 您需要將服務器綁定到 0.0.0.0

所以,可能是這些變化(未經測試):

在您的代碼中:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM