2017-10-05 2 views
1

Ich versuche, die nvidia Hardwarebeschleunigung innerhalb eines Docker-Containers auszuführen. Bis jetzt hatte ich keinen Erfolg. Beim Ausführen von glxgears erhalte ich den folgenden Fehler.GLXGears funktioniert nicht in 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 

Meine Docker Datei sieht wie folgt aus

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 

Und ich begann, den Behälter mit

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

ich zur Zeit weiß ich nicht, dass die nvidia-Treiber innerhalb des Behälters Bedürfnisse die gleiche Version haben. aber ich weiß nicht, wie das zu überprüfen ist, wenn das sogar das Problem ist.

nvidia-smi sagt

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

I this als Leitfaden verwendet, um das Problem ohne Erfolg

Antwort

1

Welche NVIDIA Docker Version zu lösen verwenden Sie?

Ich frage, weil bis vor einem Monat gab es keine OpenGL-Unterstützung in der neueren Version 2.0. Letzten Monat haben sie eine Docker-Datei erstellt, auf der OpenGL als Basis-Image gespeichert ist.

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

GLX Getriebe sollten Sie haben die NVIDIA-Treiber auf dem Host installiert ist und Sie passieren die x11-Display Argumente/bindmounts in dem Behälter aus dem Ubuntu-Repository (mesa utils) arbeiten unter der Annahme, wenn Sie das Bild laufen . Das hatte ich in meiner Dockerdatei.

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

Und die x11 Argumente, die Sie dem Docker Startbefehl hinzufügen können, wenn der Behälter ausgehend sind:

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

Diese Antwort enthält nützliche Informationen, aber liest sich wie ein ‚Me Too‘ Kommentar. Ich würde vorschlagen, es neu zu formulieren, so dass es mehr wie eine Antwort liest, sonst wird es wahrscheinlich gelöscht werden. – SiHa

+0

Danke für den Tipp! Ich habe gerade repariert. – Corey