#Docker | Ngrok# 使用Ngrok和Docker进行内网穿透

2024-05-14 15:36

本文主要是介绍#Docker | Ngrok# 使用Ngrok和Docker进行内网穿透,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、注册

  1. Ngrok官网注册,可以使用gmail或者outlook邮箱,

image.pngimage.png

  1. 正常填写后你会收到一封电子邮件,点击邮件中链接即注册成功

image.png

二、获取密钥

  1. 登录,点击Your Authtoken,最上面copy左边就是你得密钥

image.png

三、使用内网穿透启动docker

docker run --rm -it -e NGROK_AUTHTOKEN=<NGROK_TOEKN> ngrok/ngrok:latest http --request-header-add ngrok-skip-browser-warning:1 172.17.0.1:49009

启动一个 Ngrok 容器,用来创建一个 HTTP 隧道,把本地的服务暴露在互联网上。下面是对这个命令的详细解释:

详细解释

  • docker run
    启动一个新的 Docker 容器。
  • --rm
    在容器停止运行后自动删除容器。这确保了临时容器不会占用系统资源。
  • -it
    -i 表示以交互模式运行容器,允许用户输入命令;
    -t 表示分配一个伪终端。这两个选项结合起来允许用户与容器进行交互。
  • -e NGROK_AUTHTOKEN=<NGROK_TOEKN>
    设置环境变量 NGROK_AUTHTOKEN,用于提供 Ngrok 的身份验证令牌。你需要将 <NGROK_TOEKN> 替换为你的实际 Ngrok 令牌。
  • ngrok/ngrok:latest
    使用 ngrok/ngrok 镜像的最新版本启动容器。
  • http
    命令参数,告诉 Ngrok 创建一个 HTTP 隧道。
  • --request-header-add ngrok-skip-browser-warning:1
    添加一个请求头 ngrok-skip-browser-warning:1,用于跳过 Ngrok 浏览器警告。这在访问隧道时避免浏览器显示警告信息。
  • 172.17.0.1:49009
    指定本地服务的地址和端口,Ngrok 将这个地址和端口暴露在公共互联网上。在这个例子中,本地服务运行在 172.17.0.149009 端口上。

工作流程

  1. 获取 Ngrok 令牌
  • 首先,你需要在 Ngrok 网站上注册并获取一个身份验证令牌。
  1. 启动容器
  • 运行上述命令,启动一个 Ngrok 容器并创建一个 HTTP 隧道。
  1. 隧道创建
  • Ngrok 客户端会连接到 Ngrok 服务器,使用提供的令牌进行认证,并创建一个公开的 URL,通过该 URL 可以访问本地服务。
  1. 访问服务
  • Ngrok 会在控制台输出一个公开的 URL,通过这个 URL 可以从互联网访问本地运行在 172.17.0.1:49009 端口的服务。也可以通过生成的链接访问。
  • image.png

示例

假设你在本地运行了一个 Web 服务,该服务监听 172.17.0.1:49009 端口,你希望外部用户可以访问这个服务。通过运行上述命令,Ngrok 会提供一个类似于 http://abcd1234.ngrok.io 的 URL,外部用户可以通过这个 URL 访问你的本地服务。
这在开发和测试时非常有用,比如当你需要外部用户测试你的本地服务或者需要与远程客户端进行集成测试时。

这篇关于#Docker | Ngrok# 使用Ngrok和Docker进行内网穿透的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/989139

相关文章

Python在二进制文件中进行数据搜索的实战指南

《Python在二进制文件中进行数据搜索的实战指南》在二进制文件中搜索特定数据是编程中常见的任务,尤其在日志分析、程序调试和二进制数据处理中尤为重要,下面我们就来看看如何使用Python实现这一功能吧... 目录简介1. 二进制文件搜索概述2. python二进制模式文件读取(rb)2.1 二进制模式与文本

SQL Server 中的表进行行转列场景示例

《SQLServer中的表进行行转列场景示例》本文详细介绍了SQLServer行转列(Pivot)的三种常用写法,包括固定列名、条件聚合和动态列名,文章还提供了实际示例、动态列数处理、性能优化建议... 目录一、常见场景示例二、写法 1:PIVOT(固定列名)三、写法 2:条件聚合(CASE WHEN)四、

C#中checked关键字的使用小结

《C#中checked关键字的使用小结》本文主要介绍了C#中checked关键字的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录✅ 为什么需要checked? 问题:整数溢出是“静默China编程”的(默认)checked的三种用

C#中预处理器指令的使用小结

《C#中预处理器指令的使用小结》本文主要介绍了C#中预处理器指令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 第 1 名:#if/#else/#elif/#endif✅用途:条件编译(绝对最常用!) 典型场景: 示例

Mysql中RelayLog中继日志的使用

《Mysql中RelayLog中继日志的使用》MySQLRelayLog中继日志是主从复制架构中的核心组件,负责将从主库获取的Binlog事件暂存并应用到从库,本文就来详细的介绍一下RelayLog中... 目录一、什么是 Relay Log(中继日志)二、Relay Log 的工作流程三、Relay Lo

使用Redis实现会话管理的示例代码

《使用Redis实现会话管理的示例代码》文章介绍了如何使用Redis实现会话管理,包括会话的创建、读取、更新和删除操作,通过设置会话超时时间并重置,可以确保会话在用户持续活动期间不会过期,此外,展示了... 目录1. 会话管理的基本概念2. 使用Redis实现会话管理2.1 引入依赖2.2 会话管理基本操作

Springboot请求和响应相关注解及使用场景分析

《Springboot请求和响应相关注解及使用场景分析》本文介绍了SpringBoot中用于处理HTTP请求和构建HTTP响应的常用注解,包括@RequestMapping、@RequestParam... 目录1. 请求处理注解@RequestMapping@GetMapping, @PostMappin

springboot3.x使用@NacosValue无法获取配置信息的解决过程

《springboot3.x使用@NacosValue无法获取配置信息的解决过程》在SpringBoot3.x中升级Nacos依赖后,使用@NacosValue无法动态获取配置,通过引入SpringC... 目录一、python问题描述二、解决方案总结一、问题描述springboot从2android.x

SpringBoot整合AOP及使用案例实战

《SpringBoot整合AOP及使用案例实战》本文详细介绍了SpringAOP中的切入点表达式,重点讲解了execution表达式的语法和用法,通过案例实战,展示了AOP的基本使用、结合自定义注解以... 目录一、 引入依赖二、切入点表达式详解三、案例实战1. AOP基本使用2. AOP结合自定义注解3.

Python中Request的安装以及简单的使用方法图文教程

《Python中Request的安装以及简单的使用方法图文教程》python里的request库经常被用于进行网络爬虫,想要学习网络爬虫的同学必须得安装request这个第三方库,:本文主要介绍P... 目录1.Requests 安装cmd 窗口安装为pycharm安装在pycharm设置中为项目安装req