在過去的兩天裏,我遇到了碼頭問題,我可以得到它。在docker doc之後,您可以暴露容器將偵聽與EXPOSE
連接的端口。到現在爲止還挺好!Docker EXPOSE。無法得到它
如果我的應用程序在端口8080上偵聽,我應該使用EXPOSE 8080
公開我的碼頭集裝箱,並將其與docker run -p 80:8080
綁定到主主機的端口80。
這裏是我的Dockerfile:
# DOCKER-VERSION 0.0.1
FROM ubuntu:14.10
# make sure apt is up to date
RUN apt-get update
# install nodejs and npm
RUN apt-get install -y nodejs-legacy npm git git-core
ADD package.json /root/
ADD server.js /root/
# start script
ADD start.sh /root/
RUN chmod +x /root/start.sh
EXPOSE 8080
CMD ./root/start.sh
而我只是start.sh
汝南cd /root/
& npm install
& node server.js
。
我有一個簡單明確的NodeJS應用:
var express = require('express');
// Constants
var PORT = 8080;
// App
var app = express();
app.get('/', function (req, res) {
res.send('Hello world\n');
});
app.listen(PORT);
console.log('Running on http://localhost:' + PORT);
這裏是我建立我的搬運工圖像:docker build -t app1 .
,我該如何啓動我的搬運工:docker run -it -p 80:8080 --name app1 app1
什麼是真正的連線,這不是加工。要使它工作,我必須將EXPOSE 8080
更改爲EXPOSE 80
。我不明白。
任何解釋?
感謝您的閱讀, 湯姆
這是一個配置問題,我一直使用這種類型的端口映射。 「不工作」不是足夠的信息。主機上的端口是否打開?如果你直接繪製它,會發生什麼? -p 8080:8080?等等 – user2105103 2014-10-31 16:56:14
當我說「不工作」時,這意味着即使我在主要主機上請求我的容器,我也無法使用curl或80端口上的任何瀏覽器連接到我的容器。使用「-p 8080:8080」不會改變任何內容。 – 2014-11-03 08:38:35