2017-10-05 181 views
1

我试图获得在Docker容器内部运行的nvidia硬件加速。到目前为止,我没有成功。当运行glxgears时出现以下错误。GLXGears无法在Docker内工作

[email protected]:/# 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     | 
|-------------------------------+----------------------+----------------------+ 

我用this作为指导来解决问题,而不

回答

1

哪个NVIDIA泊坞窗版本,您使用的任何成功?

我问,因为直到一个月前,在较新的2.0版本中没有OpenGL支持。上个月,他们制作了一个dockerfile,并将OpenGL作为基础镜像。

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

GLX齿轮应该制定出在容器中的Ubuntu的储存库(台面utils的)的假设你有你的主机上安装了NVIDIA驱动程序,你,你通过X11显示参数/ bindmounts当你运行图像。这是我在我的dockerfile中的。

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

而且X11的参数,你可以在启动容器时要添加到泊坞窗运行命令是:

-v /tmp/.X11-unix:/tmp/.X11-unix \ 
-e DISPLAY=unix$DISPLAY 
+0

这个答案包含有用的信息,但读起来就像是“我也是”评论。我建议重新措辞,以便它更像是一个答案,否则它可能会被删除。 – SiHa

+0

感谢您的提示!我刚刚修好了。 – Corey