2015-11-20 3 views
6

Я пытаюсь запустить Chrome обезглавленный внутри Докер контейнера с использованием Xvfb. Однако, в то время как ps показывает, что процессы Chrome существуют, он не доходит до моего тестового веб-сайта. Выполнение одних и тех же команд за пределами Docker является успешным.Безголовый Chrome в Докер с помощью Xvfb

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

В Докер, я получаю следующие сообщения/ошибки:

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. 

Хотя

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 

Запуск же команды вне Докер (где он работает) я получаю сообщения/ошибки:

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 

ответ

10

Простая проблема: установка переменной окружения DISPLAY для вызова недостаточно при запуске Chrome. Также необходимо передать флаг для отключения GPU, поскольку докер не имеет к нему доступа и отключает песочницу. Я должен экспортировать дисплей:

export DISPLAY=:0 
Xvfb :0 -screen 0 1024x768x24 & 
google-chrome --disable-gpu --no-sandbox http://mytestpage.com 
Смежные вопросы