Headless chrome in docker using Xvfb

I am trying to run Chrome headless inside a Docker container using Xvfb . However, while ps shows that Chrome processes exist, it doesn’t reach my test website. Running the same commands outside of Docker is successful.

Xvfb :0 -screen 0 1024x768x24 & DISPLAY=:0 google-chrome http://mytestpage.com 

In Docker, I get the following messages / errors:

 Xlib: extension "RANDR" missing on display ":0". Xlib: extension "RANDR" missing on display ":0". [1180:1180:1120/051319:ERROR:desktop_window_tree_host_x11.cc(882)] Not implemented reached in virtual void views::DesktopWindowTreeHostX11::InitModalType(ui::ModalType) [1223:1223:1120/051319:ERROR:sandbox_linux.cc(338)] InitializeSandbox() called with multiple threads in process gpu-process [1180:1201:1120/051319:ERROR:browser_gpu_channel_host_factory.cc(144)] Failed to create channel. 

While

 ps au | grep chrome * root 128 0.1 0.4 533772 69868 ? Sl+ 06:02 0:00 /opt/google/chrome/chrome http://mytestpage.com * root 139 0.0 0.2 342648 44016 ? S+ 06:02 0:00 /opt/google/chrome/chrome --type=zygote * root 140 0.0 0.0 28132 3812 ? S+ 06:02 0:00 /opt/google/chrome/nacl_helper * root 143 0.0 0.0 342648 8016 ? S+ 06:02 0:00 /opt/google/chrome/chrome --type=zygote * root 181 0.0 0.3 523452 52392 ? Sl+ 06:02 0:00 /opt/google/chrome/chrome --type=gpu-process --channel=128.0.846512492 --supports-dual-gpus=false --gpu-driver-bug-workarounds=2,45,57 -$ * root 298 0.0 0.0 11120 1084 ? S+ 06:05 0:00 grep chrome 

Running the same commands outside of Docker (where it works) I get messages / errors:

 Xlib: extension "RANDR" missing on display ":1". Xlib: extension "RANDR" missing on display ":1". [17750:17750:1119/215139:ERROR:sandbox_linux.cc(338)] InitializeSandbox() called with multiple threads in process gpu-process 
+6
source share
1 answer

A simple problem: setting the DISPLAY environment variable to call is not enough when you start Chrome. It is also necessary to pass a flag to disable the GPU, since the docker does not have access to it and disables the sandbox. I need to export a mapping:

 export DISPLAY=:0 Xvfb :0 -screen 0 1024x768x24 & google-chrome --disable-gpu --no-sandbox http://mytestpage.com 
+10
source

All Articles