一个用于在虚拟桌面下跑chrome的docker镜像

制作了一个用于跑chrome的docker镜像xvfb-chrome,主要是为了支持能够通过xvfb或者wayland,给chrome提供一个虚拟的桌面环境。

这个镜像主要支持:

  • 将chrome --remote-debugging-port映射到docker的host,可以在host直接访问。
  • 支持使用非root用户运行chrome(无需--no-sandbox运行chrome)。
  • 支持使用虚拟桌面运行chrome,支持xvfb和wayland。
  • 减少open /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq: No such file or directory (2)错误的发生。
  • 支持将字体目录映射到容器中。

这个容器可以通过如下方式获取(tag即为chrome的版本号)

# 获取最新版本
docker pull socrateslee/xvfb-chrome:latest
# 获取某个具体版本,支持版本件https://hub.docker.com/r/socrateslee/xvfb-chrome/tags
docker pull socrateslee/xvfb-chrome:125.0.6422.141-1

主要的使用方法如下

通过一些例子来介绍一下容器的使用方法:

  • 以headless 方式启动chrome
sudo docker run --rm -it \
                -v $(pwd):/workdir --workdir /workdir \
                --cap-add=SYS_ADMIN \
                socrateslee/xvfb-chrome:latest\
                --headless <URL>
  • 以xvfb方式启动,指定 --remote-debugging-port(方便selenium/chromedp/playwright等连接):
sudo docker run --rm -it \
                -v $(pwd):/workdir --workdir /workdir \
                --cap-add=SYS_ADMIN \
                -p 9222:9222 \
                socrateslee/xvfb-chrome:latest\
                --xvfb-run --remote-debugging-port=9222
  • 通过wayland方式启动:
sudo docker run --rm -it \
                -v $(pwd):/workdir --workdir /workdir \
                --cap-add=SYS_ADMIN \
                -p 9222:9222 \
                socrateslee/xvfb-chrome:latest\
                --wayland --remote-debugging-port=9222 --disable-gpu
  • 指定字体目录(可以先把*.ttf字体下载到<YOUR_FONTS_DIR>这个目录中)
sudo docker run --rm -it \
                -v <YOUR_FONTS_DIR>:/home/chrome/.fonts \
                -v $(pwd):/workdir --workdir /workdir \
                --cap-add=SYS_ADMIN \
                -p 9222:9222 \
                socrateslee/xvfb-chrome:latest\
                --headless=new --print-to-pdf <URL>

其他注意事项

一些版本的chrome,或者是跑在一些特殊环境中,通过虚拟桌面启动的chrome可能遇到如下的错误,此时chrome会hang住,无法建立有效的websocket连接,只能重启重启解决

[0707/070947.640825:ERROR:file_io_posix.cc(145)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq: No such file or directory (2)
[0707/070947.640877:ERROR:file_io_posix.cc(145)] open /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq: No such file or directory (2)

启动容器时,指定 --wayland 参数,增加 --disable-gpu 参数,有时可以显著的减少这个问题的发生(但是无法避免)。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-10 14:50:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-10 14:50:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-10 14:50:01       58 阅读
  4. Python语言-面向对象

    2024-07-10 14:50:01       69 阅读

热门阅读

  1. 东方通Tongweb发布vue前端,HSTS漏洞修复

    2024-07-10 14:50:01       20 阅读
  2. 【无标题】

    2024-07-10 14:50:01       18 阅读
  3. Redis教程(二十三):Redis的底层数据结构

    2024-07-10 14:50:01       24 阅读
  4. 博客网站目录网址导航自适应主题php源码

    2024-07-10 14:50:01       21 阅读
  5. 这道笔试题,给了我一点小小的c语言震撼

    2024-07-10 14:50:01       18 阅读
  6. python压缩PDF方案(Ghostscript+pdfc)

    2024-07-10 14:50:01       21 阅读
  7. 掌握Perl命令行:深入解析命令行参数的艺术

    2024-07-10 14:50:01       29 阅读