GLXGears не работает внутри Docker

Я пытаюсь запустить аппаратное ускорение nvidia внутри контейнера Docker. Пока что у меня нет успеха. При беге glxgears Я получаю следующую ошибку.

root@fea7a51ac757:/# glxgears
libGL error: No matching fbConfigs or visuals found
libGL error: failed to load driver: swrast
X Error of failed request:  BadValue (integer parameter out of range for operation)
  Major opcode of failed request:  154 (GLX)
  Minor opcode of failed request:  3 (X_GLXCreateContext)
  Value in failed request:  0x0
  Serial number of failed request:  35
  Current serial number in output stream:  37

Мой докер файл выглядит так

FROM osrf/ros:lunar-desktop-full
# nvidia-docker hooks
LABEL com.nvidia.volumes.needed="nvidia_driver"
ENV PATH /usr/local/nvidia/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64:${LD_LIBRARY_PATH}

EXPOSE 11311
EXPOSE 11345

И я начал контейнер с

nvidia-docker run -it  --volume=/tmp/.X11-unix:/tmp/.X11-unix   --device=/dev/dri:/dev/dri   --env="DISPLAY"   my-custom-image

В настоящее время я не знаю, что драйвер nvidia внутри контейнера должен иметь ту же версию. но я не знаю, как это проверить, если это даже проблема.

nvidia-smi говорит

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.90                 Driver Version: 384.90                    |
|-------------------------------+----------------------+----------------------+

Я использовал это как руководство, чтобы решить проблему без какого-либо успеха

1 ответ

Какую версию докера NVIDIA вы используете?

Я спрашиваю, потому что до месяца назад не было поддержки OpenGL в более новой версии 2.0. В прошлом месяце они создали dockerfile, на котором в качестве базового образа был установлен OpenGL.

https://hub.docker.com/r/nvidia/opengl/

Механизмы GLX должны работать из хранилища ubuntu (утилиты mesa) в контейнере, если на вашем хосте установлены драйверы NVIDIA, и вы передаете аргументы / bindmounts для дисплея x11 при запуске образа. Это то, что у меня было в моем докер-файле.

https://github.com/coreyryanhanson/dockerfiles/blob/master/glxgears/ubuntu16%20opengl/Dockerfile

И аргументы x11, которые вы можете добавить к команде запуска docker при запуске контейнера:

-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY
Другие вопросы по тегам