应用程序未在主机端口上加载 - Docker

Application not loading on host port - Docker

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

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

您检查过 docker 日志了吗?那应该给你出了什么问题。

$ docker logs <containerid>

我觉得你的监听端口在docker里面是8010,在docker外面是8001,你换个-p 8001:8001试试?如果有效,请尝试 -p 8001:8010.

您可以尝试 "curl -v http://127.0.0.1:8081" 并将输出粘贴到此处吗?还有,你是不是在service或者dockerd启动后操作了ufw?