【docker系列】搭建Ngrok实现内网穿透

先来一张效果图镇楼

内网穿透是什么?

内网穿透,即NAT穿透,网络连接时术语,计算机是局域网内时,外网与内网的计算机节点需要连接通信,有时就会出现不支持内网穿透。就是说映射端口,能让外网的电脑找到处于内网的电脑,提高下载速度。不管是内网穿透还是其他类型的网络穿透,都是网络穿透的统一方法来研究和解决。

什么场景下会使用到内网穿透?

上面说的比较官方,我们还是来聊聊实际应用场景,比如你接了一个外单系统,做完了以后老板想验货,这时候大部分无非就2种做法,开远程让他看/自己部署到公网的服务器让别人看,两种都很麻烦,费时费力,那么我们做一个内网穿透,直接让别人通过外网域名访问你的本地机器,岂不是很简单。

还有作为开发人员来讲,用内网穿透来做本地调试还是挺方便的,现在第三方对接都是需要公网域名的,比如微信的一些接口,不用内网穿透将会花费很多的时间和精力在调试上。

准备工作

  • 一台公网服务器

  • 自己的域名,并解析出来一个ngrok服务器的子域名,小编这里用的是ngrok.javakhbd.com

PS:本文基于腾讯云

拉取镜像

docker pull hteen/ngrok

执行编译命令,编译服务端和客户端

docker run --rm -it -e DOMAIN="ngrok.javakhbd.com" -v /data/ngrok:/myfiles hteen/ngrok sh /build.sh

执行成功截图

此刻在/data/ngrok目录下面,你会看到以下文件:

我们生成的客户端和服务器在/data/ngrok/bin目录下

bin/ngrokd                  服务端
bin/ngrok                   linux客户端
bin/darwin_amd64/ngrok      osx客户端
bin/windows_amd64/ngrok.exe windows客户端

启动服务器端

由于之前的命令是编译命令并不是启动容器,所以我们开始根据刚才下载的镜像来启动容器

docker run -idt --name ngrok-server -v /data/ngrok:/myfiles -p 80:80 -p 443:443 -p 4443:4443 -e DOMAIN='ngrok.javakhbd.com' hteen/ngrok sh /server.sh

如果是这些宿主端口被nginx等占用可以换以下宿主端口,然后自己做映射即可。

客户端连接

这里以window客户端为例。

先将服务器上编译好的客户端下载下来。

创建一个文件ngrok.cfg,作为配置文件,里面配置如下:

server_addr: "你的ngrok域名:4443端口"
trust_host_root_certs: false

配置文件弄好以后虽然也能通过命令启动,但是总归太麻烦了,我们把命令放到start.bat可执行文件,这样每次要用到内网穿透的时候双击就可以了。

ngrok.exe -config  ngrok.cfg -subdomain ceshi localhost:8081

见证效果

话不多说,直接上动图吧!

- End -

【5分钟教程】docker 搭建nginx并配置https

基于win10+Docker+idea的SpringBoot项目容器化部署

使用windows版Docker并在IntelliJ IDEA使用Docker运行Spring Cloud项目

【实战原创】SpringBoot应用docker化并发布到远程服务器

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页