Docker群,
设置:只有主节点(公用ip:30.50.60.90和Intranet ip:10.0.0.3)在Internet上,工作节点(Intranet ip:10.0.0.6和10.0.0.9)在Internet上内部网。
服务创建-
$docker service create \
--name my-nginx \
--network my-overlay \
--replicas 1 \
-p 8080:80 \
nginx:latest
现在,从互联网上点击http://30.50.60.90:8080是否有效?
如果可以,那么路由网格在这里的作用是什么?
答案 0 :(得分:0)
如果您没有配置防火墙或路由器NAT来转发端口,则无论您知道公用IP地址如何,都无法从Internet访问它。您的公共IP地址指向您的路由器,但是从那里,您的路由器隐藏了您的本地网络,而您的群集可能已部署在该本地网络中。为了从Internet访问端口,必须在路由器中配置NAT以将端口转发到计算机,只要部署了容器,从那里就可以访问服务。
有关更多信息,请选中Super User - What is port forwarding and what is it used for?。
如果您需要一种简单的方法来通过Internet获得服务,我会给ngrok做个尝试。
答案 1 :(得分:-1)
对于访问,docker服务需要反向代理,因为docker swarm在内部网络中运行服务。 docker服务IP在Internet上不是公开的,因为服务在docker-machine上运行,docker-machine是隔离形式的网络。 您可以为反向代理设置Nginx或任何负载均衡器。
例如,Nginx中的反向代理
server {
listen 80;
server_name hello.com www.hello.com;
location / {
proxy_pass http://your_server_ip:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}