【发布时间】:2019-11-14 16:49:40
【问题描述】:
我已将路由器配置为在我的本地计算机 IP 地址上公开 http 80: 即“192.168.0.79”,并公开入站和出站 IP 地址,包括允许通过防火墙。为了这个例子的目的,让我们说它的“200.200.200.200”
我有一个节点服务器在同一个 IP 地址上本地运行,当我访问我暴露的 IP 地址时,我可以看到“hello world”,例如:在我的网络浏览器上的 200.200.200.200。这行得通。
import yargs from 'yargs';
import express from 'express';
const app = express();
const argv = yargs.argv;
const host = argv.host ;
const port = argv.port;
app.get('/', (req, res) => res.send('Hello World!'));
app.listen(port, host, function() {
console.log('listening on ', host, ':', port);
});
当我停止节点服务器并在同一 IP 地址上运行 docker 容器时,如下所示:
docker run -p 192.168.0.79:80:8080 -p 50000:50000 --name myjenkins -v %cd%/jenkins:/var/jenkins_home jenkins/jenkins
我可以在我的机器上本地看到它,但是当尝试从外部网络浏览器访问它时,例如:“200.200.200.200”它只是返回 - HTTP ERROR 504
我还需要通过 docker 容器公开其他内容以使其在线可见吗?
我在使用 nginx 映像时遇到了同样的问题。所以我确信我的 docker 参数中缺少一些东西。
Dockerfile
FROM nginx:alpine
RUN rm /etc/nginx/conf.d/default.conf
COPY dist /usr/share/nginx/html/dist
COPY nginx/default.conf /etc/nginx/conf.d/
docker build -t nginx_image .
docker run -p 192.168.0.79:80:8080 nginx_image
【问题讨论】:
-
在某些情况下,您的 ISP 可能会阻止外部访问端口 80
-
host的值是多少? -
主机是 192.168.0.79
标签: docker ip-address router