如何使用Windows通过Internet公开Docker容器

问题描述 投票:0回答:1

我已将路由器配置为在本地计算机的IP地址上公开http 80:即“ 192.168.0.79”,并公开了入站和出站IP地址,包括允许通过防火墙。就此示例而言,假设其为“ 200.200.200.200”

我有一个在相同IP地址上本地运行的节点服务器,该服务器正常工作,当我访问自己的IP地址时,例如Web浏览器上的200.200.200.200,可以看到“ hello world”。这有效。

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

我可以在我的机器上本地看到它,但是当尝试从外部Web浏览器访问它时,例如:“ 200.200.200.200”,它仅返回-HTTP错误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
docker ip-address router
1个回答
0
投票

听起来像是回程路线。登录到您的docker容器,看看是否可以ping 8.8.8.8。还要运行netstat -r并查看默认路由是什么。它应该是防火墙的内部IP地址。

© www.soinside.com 2019 - 2024. All rights reserved.