如何使用Docker快速运行Firefox并实现远程访问本地火狐浏览器

文章目录

    • 1. 部署Firefox
    • 2. 本地访问Firefox
    • 3. Linux安装Cpolar
    • 4. 配置Firefox公网地址
    • 5. 远程访问Firefox
    • 6. 固定Firefox公网地址
    • 7. 固定地址访问Firefox

Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏览器垄断地位的浏览器之一。

在Docker中打开Firefox意味着我们将在一个Docker容器中运行Firefox浏览器。这对于一些特殊的测试场景非常有用,例如需要在不同版本的浏览器中进行测试。下面是一个简单的示例,演示如何在Docker中打开Firefox。

本次实践部署环境为本地环境,在Docker环境下部署Firefox浏览器后,并结合Cpolar内网穿透工具实现远程也可以访问!

1. 部署Firefox

创建外部挂载目录

mkdir -p /data/firefox/config

创建后,执行docker 命令一键启动运行即可

docker run -d --name firefox -e TZ=Asia/Hong_Kong  -e DISPLAY_WIDTH=1920 -e DISPLAY_HEIGHT=1080 -e KEEP_APP_RUNNING=1 -e ENABLE_CJK_FONT=1  -e VNC_PASSWORD=admin  -p 5800:5800 -p 5900:5900 -v /data/firefox/config:/config:rw --shm-size 2g jlesage/firefox
#参数介绍
-e TZ=Asia/Hong_Kong       # 设置时区
-e DISPLAY_WIDTH=1920
-e DISPLAY_HEIGHT=1080     #设置显示的高宽
-e KEEP_APP_RUNNING=1      # 保持启动状态
-e ENABLE_CJK_FONT=1       # 防止显示页面时中文乱码
-e SECURE_CONNECTION=1     # 启用HTTPS功能
-e VNC_PASSWORD=admin  #设置VNC的访问密码,自定义即可
-p 5800:5800               #访问firefox的web端口
-p 5900:5900               #VNC端口
-v /data/irefox/config:/config:rw         # 容器挂载目录,存放firefox数据
--shm-size 2g               # 设置容器的内存资源为2g 

运行后,输入docker ps 可以查看到运行的Firefox容器,接下来进行本地访问

image-20231127134541125

2. 本地访问Firefox

打开浏览器,输入Linux 局域网IP加5800端口,即可看到我们本地搭建的火狐浏览器界面

image-20231127135709627

上面设置的密码是admin,输入即可进入,这样我们就拥有了本地自己的一个浏览器,本地部署完毕后,下面安装cpolar 内网穿透工具,实现远程访问!

image-20231127135818895

3. Linux安装Cpolar

上面在本地成功部署了FireFox 火狐浏览器,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

cpolar安装成功后,在外部浏览器上访问Linux 的9200端口 即:【http://局域网ip:9200】,使用cpolar账号登录(如没有账号,可以点击下面免费注册),登录后即可看到cpolar web 配置界面,结下来在web 管理界面配置即可

image-20231016143741228

4. 配置Firefox公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个firefox的公网http地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:5800(本地访问的地址)
  • 域名类型:免费选择随机域名
  • 地区:选择China

点击创建

image-20231127141131232

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https

image-20231127141201174

5. 远程访问Firefox

使用上面的Cpolar https公网地址,在任意设备的浏览器进行访问,即可成功看到我们火狐浏览器界面,这样一个公网地址且可以远程访问就创建好了,使用了cpolar的公网域名,无需自己购买云服务器,即可发布到公网进行远程访问 !(新地址访问,需要重新登录一下)

image-20231127141903529

小结

为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。

我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:firefox.cpolar.cn),这样更显正式,便于流交协作。

6. 固定Firefox公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20231127142421770

保留成功后复制保留成功的二级子域名的名称

image-20231127142445323

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20231127142542205

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20231127142611735

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名

image-20231127142724213

7. 固定地址访问Firefox

最后,我们使用固定的公网https地址访问,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以远程访问本地火狐浏览器!!

image-20231127143036497

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/633074.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于manifest文件批量将coding的仓库导入gitlab中

文章目录 写在前面的话背景编写manifest文件最终效果 写在前面的话 前面有讲过通过manifest清单导入项目到gitlab中,但是实际的操作是不同gitlab实例之间的操作,然而对于在不同gitlab实例的repo迁移而言,显然direct transfer会更合适。 背景…

Spring6笔记(五):国际化、数据校验、提前编译

九、国际化:i18n 9.1 i18n概述 9.2 Java国际化 9.3 Spring6国际化 十、数据校验:Validation 10.1 Spring Validation 概述 10.2 实验一:通过 validator 接口实现 10.3 实验三:Bean Validation 注解 10.4 实验四:实现…

深入了解 RabbitMQ:构建可靠消息传递系统的关键

前言 在现代分布式应用程序开发中,构建可靠的消息传递系统至关重要。RabbitMQ 作为一款强大的消息代理软件,为开发人员提供了丰富的工具和解决方案。本文将深入探讨 RabbitMQ 的核心概念、工作原理以及其在实际应用中的应用场景。 一、什么是 RabbitMQ…

[力扣]——231.2的幂

题目描述: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 bool isPowerOfTwo(int n){ if(n0)retur…

Diffusion Policy:基于扩散模型的机器人动作生成策略

项目地址: Diffusion Policy (columbia.edu) 一、摘要 本文介绍了 "扩散策略",这是一种生成机器人行为的新方法,它将机器人的视觉运动策略(visuomotor policy)表示为条件去噪扩散过程(conditi…

15:00面试,15:08出来,面试问的有点变态。。。。

🍅 视频学习:文末有免费的配套视频可观看 🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天…

Manjaro /opt/google/chrome error

mingcai Manjaro in /opt/google/chrome [22:34:02] $ ./google-chrome [62841:62841:0516/223407.119870:ERROR:process_singleton_posix.cc(353)] 其他计算机 (mingcai-systemproductname) 的另一个 Google Chrome 进程 (2931) 好像正在使用此个人资料。Chrome 已锁定此个人…

PySide6 QStateMachine状态机的实现

PySide6的状态机模块提供了一种方便的方式来实现状态机模式,用于管理程序的状态和状态转换。通过使用PySide6的状态机模块,开发者可以更加清晰地组织程序逻辑,使程序更易于维护和扩展。 在PySide6中,状态机相关的类主要包括&…

探索k8s集群中kubectl的陈述式资源管理

一、k8s集群资源管理方式分类 1.1陈述式资源管理方式:增删查比较方便,但是改非常不方便 使用一条kubectl命令和参数选项来实现资源对象管理操作 即通过命令的方式来实 1.2声明式资源管理方式:yaml文件管理 使用yaml配置文件或者json配置文…

Monkey自动化测试(Android)吐血整理(超详细)

一、前言 随机的命令对APP进行自动化测试,可以快速发现APP的问题,若执行时设置的-S 100出现了一个错误,后面再执行时,只需设置相同的-S,就会按照第一次执行命令的顺序再次执行 自动化就是比较有针对性的对某一个功能…

Jenkins部署成功后自动发通知到钉钉群

钉钉上如何配置 选择钉钉群,找到群设置-机器人-添加机器人 选择自定义 选择【添加】 选择【加签】,复制值,后续在jenkins里配置时会用到 复制Webhook地址,后面在jenkins里配置的时候要用到 Jenkins上如何配置 系统管理-插件管…

数学建模~~多目标规划

1.认识多目标规划 (1)前面我们介绍的是单目标规划,现在我们要认识一下多目标规划: (2)使用上面的这个题目作为例子,简单的翻译一下题干,这个题目说的就是 有1,2这两种产…

LeetCode题练习与总结:二叉树的最大深度--104

一、题目描述 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root […

Nginx/阿里云/二级域名的配置和使用

阿里云域名解析配置如下: nginx配置如下: 访问地址: zhadmin.iotzzh.com image.png

SD-WAN EVPN基本原理

SD-WAN EVPN是一种用于Overlay业务网络和底层传输网络分离以及业务网络路由和传输网络路由分离的VPN技术。SD-WAN EVPN技术采用类似于BGP/MPLS IP VPN的机制,通过扩展BGP协议,使用扩展后的可达性信息,使不同站点的底层传输网络互通&#xff0…

【NumPy】关于numpy.loadtxt()函数,看这一篇文章就够了

🧑 博主简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟,欢迎关注。提供嵌入式方向…

微服务如何做好监控

大家好,我是苍何。 在脉脉上看到这条帖子,说阿里 P8 因为上面 P9 斗争失败走人,以超龄 35 被裁,Boss 上找工作半年,到现在还处于失业中。 看了下沟通记录, 沟通了 1000 多次,但没有一个邀请投递…

MySQL-笔记-02.关系模型基本理论

目录 2.1 关系模型 2.1.1 基本概念 2.1.2 关系的完整性 1 实体完整性 2 参照完整性 3 用户定义完整性 2.2 关系代数 2.2.1 传统的集合运算 1 并运算 2 交运算 3 差运算 4 ​​笛卡尔积​编辑 2.2.2 专门的关系运算 1 选择 2 投影 3 连接 (1)等…

活动预告|来 GIAC 大会听大数据降本利器:AutoMQ 基于云原生重新设计的 Kafka

GIAC大会 2024年5月24日至25日,2024 全球互联网架构大会(简称:GIAC大会)将于深圳华侨城洲际酒店举行。大会将聚焦互联网架构热门的 AIGC、效能提升、 云原生架构、数据智能、新硬件等领域,甄选前沿的有典型代表性的技…

“手撕”String类+练习题

目录 一、什么是String类 二、String类的使用 三、String类的字符串操作 String对象的比较 字符串的查找 字符串的转换 字符串的替换 字符串的拆分 字符串的截取 大小写和去空格方法 四、字符串的不可变性 五、字符串的修改 六、StringBuilder类和StringBuffer类…