用docker运行一个Firefox浏览器

2023-04-09 15:16:07 10点赞 78收藏 14评论

今天介绍通过docker运行Firefox浏览器。你可能会问这有什么用?是这样的,因为我的x86路由没有安装ESXi和PVE,只有一个单独的OpenERT,但偶尔需要配置其它设备(诸如光猫、路由等),这需要用到浏览器。于是就有了这个解决方案:

jlesage/firefox是一个开源项目。我习惯用docker-compose搭建容器,首先在Linux设备上安装docker和docker-compose(为什么我偏爱docker-compose,因为有docker-compose.yaml文件留底,方便找到自己修改过的设置)。将下面的内容保存为docker-compose.yaml:

version: '3.3'
services:
firefox:
container_name: firefox
ports:
- '1001:5800'
volumes:
- './firefox:/config:rw'
environment:
- LANG=zh_CN.UTF-8
image: jlesage/firefox

然后新建一个firefox的文件夹,把docker-compose.yaml放进去,然后运行容器命令:

docker-compose up -d

注意此时的firefox不支持中文的显示,中文全部为乱码。官方指导文件里说需要在environment添加“- ENABLE_CJK_FONT=1”这个参数。事实上我添加这个参数后遇到了容器无法访问的问题,所以如果你也遇到这个问题可以用我下面的方法。

首先下载一个中文字体,比如阿里巴巴普惠体等,或者从电脑上拷贝一个微软雅黑的字体到小主机

然后运行docker ps查看jlesage/firefox的容器ID


用docker运行一个Firefox浏览器


然后用下面的命令把字体文件拷贝到容器里:

docker cp 字体文件地址 docker名称:/usr/share/fonts
#举例 docker cp /mnt/sata2-1/docker-compose/firefox/AlibabaPuHuiTi.ttf 8a373b071ebe:/usr/share/fonts

这样就能正常运行firefox了。注意这个firefox依然使用有局限,就是不能输入中文,只能通过界面的剪切板工具先输入后,再到浏览器中进行拷贝。好在只是配置设备不需要经常输入中文。


用docker运行一个Firefox浏览器


注意通过docker搭建浏览器的性能开销很大(超过在Windows系统中直接使用,尤其是看视频对CPU的开销更大)。所以这个浏览器容器不需要长期运行,只需要在需要的时候打开即可,下图分别是看视频时和关闭时性能占用情况:


用docker运行一个Firefox浏览器



用docker运行一个Firefox浏览器


有了这个浏览器,即使我的x86路由没有桌面环境,可以通过浏览器里的浏览器配置其它设备了。


作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起
14评论

  • 精彩
  • 最新
  • 使用场景是啥

    校验提示文案

    提交
    你问这个问题,说明这个功能其实你没有需求,其实不用花时间折腾。这确实是很小众的一个功能需求。

    校验提示文案

    提交
    在路由器上开个端口,就可以远程登录这个浏览器了,通过这个浏览器设置局域网内的其他设备。以往的做法是虚拟机开一个Windows,远程登录后,启动浏览器操作,资源消耗大。

    校验提示文案

    提交
    收起所有回复
  • 很早之前就在vps上面装了个这个,轻度使用还行

    校验提示文案

    提交
    怎么解决中文乱码的问题?和docker版chrome相比 哪个更好??

    校验提示文案

    提交
    没用过docker版chrome

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 用了很久了,一直很稳定

    校验提示文案

    提交
    怎么解决中文乱码的问题?和docker版chrome相比 哪个更好?

    校验提示文案

    提交
    收起所有回复
  • Pve lxc装个Debian 再加个桌面环境然后安装xrdp用微软远程那流畅度就能看视频,不用时基本没啥占用,用的时候手机或电脑rdp连接就OK

    校验提示文案

    提交
  • 在这个浏览器中下载的数据保存在使用者的电脑里,还是软路由机器里?

    校验提示文案

    提交
  • 你在软路由里面开个代理,通过代理不就可以直接访问软路由前面的设备了吗?

    校验提示文案

    提交
  • arm32能用不???

    校验提示文案

    提交
  • 终于解决这个中文乱码的问题了

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
78
扫一下,分享更方便,购买更轻松