GLXGears 在 Docker 内部不工作
GLXGears not working inside of Docker
我正在尝试在 Docker 容器中获取 nvidia 硬件加速 运行。到目前为止,我没有成功。当 运行 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
我的 docker 文件看起来像这样
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-driver需要有相同的版本。但我不知道如何检查这是否是问题所在。
nvidia-smi
说
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.90 Driver Version: 384.90 |
|-------------------------------+----------------------+----------------------+
我以this为指导解决了问题,但没有成功
您使用的是哪个 NVIDIA docker 版本?
我问是因为直到一个月前,较新的 2.0 版本中还没有 OpenGL 支持。上个月他们制作了一个 docker 文件,其中包含 OpenGL 作为基础图像。
https://hub.docker.com/r/nvidia/opengl/
GLX gears 应该在容器中的 ubuntu 存储库 (mesa utils) 中工作,假设您在主机上安装了 NVIDIA 驱动程序并且当您通过 x11 显示器 arguments/bindmounts 运行 图片。这是我 docker 文件中的内容。
https://github.com/coreyryanhanson/dockerfiles/blob/master/glxgears/ubuntu16%20opengl/Dockerfile
您可以在启动容器时添加到 docker 运行 命令的 x11 参数是:
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY
我正在尝试在 Docker 容器中获取 nvidia 硬件加速 运行。到目前为止,我没有成功。当 运行 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
我的 docker 文件看起来像这样
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-driver需要有相同的版本。但我不知道如何检查这是否是问题所在。
nvidia-smi
说
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.90 Driver Version: 384.90 |
|-------------------------------+----------------------+----------------------+
我以this为指导解决了问题,但没有成功
您使用的是哪个 NVIDIA docker 版本?
我问是因为直到一个月前,较新的 2.0 版本中还没有 OpenGL 支持。上个月他们制作了一个 docker 文件,其中包含 OpenGL 作为基础图像。
https://hub.docker.com/r/nvidia/opengl/
GLX gears 应该在容器中的 ubuntu 存储库 (mesa utils) 中工作,假设您在主机上安装了 NVIDIA 驱动程序并且当您通过 x11 显示器 arguments/bindmounts 运行 图片。这是我 docker 文件中的内容。
https://github.com/coreyryanhanson/dockerfiles/blob/master/glxgears/ubuntu16%20opengl/Dockerfile
您可以在启动容器时添加到 docker 运行 命令的 x11 参数是:
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=unix$DISPLAY