在过去的两天里,我遇到了码头问题,我可以得到它。在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