Docker服务无法在裸露的端口上加载

时间:2019-05-07 11:39:37

标签: docker docker-swarm docker-container docker-image

我已经创建了一个简单的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”。

3 个答案:

答案 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