我已经创建了一个简单的DOCKERFILE
,并在docker群中从中构建了图像“ sample-image”,但是每当我尝试通过创建docker服务并将其暴露在各自的端口上来运行容器时,无法在我的浏览器上加载。请帮助
首先,我已经初始化了docker swarm,并从dockerfile创建了一个映像“ sample-image”,之后,我在swarm内创建了覆盖网络“ sample-network”,并创建了一个在其"docker service create --name sample-service -p 8010:8001 --network sample-network sample-image"
上运行容器的服务。服务已创建,但由于我也为端口8010
启用了ufw,因此无法在浏览器中加载。
DOCKERFILE:
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8001
CMD [ "npm", "start" ]
server.js:
'use strict';
const express = require('express');
const PORT = 8001;
const HOST = '0.0.0.0';
const app = express();
app.get('/', (req, res) => {
res.send('Hello world\n');
});
app.listen(PORT, HOST);
console.log(`Running on http://${HOST}:${PORT}`);
我希望我的网络浏览器在公开的端口号上显示“ Hello world”。
答案 0 :(得分:1)
您是否检查了docker日志?那应该给你出什么问题了。
$ docker logs <containerid>
答案 1 :(得分:1)
您可以尝试使用“ curl -v http://127.0.0.1:8081”并将输出粘贴到此处吗?另外,在服务或dockerd启动后,您是否操纵过ufw?
答案 2 :(得分:0)
我认为您在docker内部的监听端口是8010,在docker外部是8001,您可以尝试更改-p 8001:8001
吗?如果可行,请尝试-p 8001:8010
。