• 一个用于在虚拟桌面下跑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 
    
    • 以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字体下载到这个目录中)
    sudo docker run --rm -it \
                    -v :/home/chrome/.fonts \
                    -v $(pwd):/workdir --workdir /workdir \
                    --cap-add=SYS_ADMIN \
                    -p 9222:9222 \
                    socrateslee/xvfb-chrome:latest\
                    --headless=new --print-to-pdf 
    

    其他注意事项

    一些版本的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 参数,有时可以显著的减少这个问题的发生(但是无法避免)。

  • 相关阅读:
    【网络编程】基于TCP的服务器端/客户端
    GaussDB T分布式集群安装部署
    数据平台建设的痛点,如何进行元数据治理?
    celeba-spoof数据集解压方式
    vue-pdf多页预览异常,Rendering cancelled, page 1 Error at BaseExceptionClosure xxx
    OpenHarmony3.1 Release版本特性解析——硬件资源池化架构介绍
    人体状态检测YOLOV8 NANO
    [nlp] chathome—家居装修垂类大语言模型的开发和评估
    Linux进程通信之共享内存
    目标检测YOLO实战应用案例100讲-SAR图像多尺度舰船目标检测
  • 原文地址:https://blog.csdn.net/socrates/article/details/140284135