制作了一个用于跑chrome的docker镜像xvfb-chrome,主要是为了支持能够通过xvfb或者wayland,给chrome提供一个虚拟的桌面环境。
这个镜像主要支持:
--remote-debugging-port
映射到docker的host,可以在host直接访问。--no-sandbox
运行chrome)。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
通过一些例子来介绍一下容器的使用方法:
sudo docker run --rm -it \
-v $(pwd):/workdir --workdir /workdir \
--cap-add=SYS_ADMIN \
socrateslee/xvfb-chrome:latest\
--headless
--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
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
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
参数,有时可以显著的减少这个问题的发生(但是无法避免)。