2017-10-05 2 views
1

J'essaie de faire fonctionner l'accélération matérielle nvidia à l'intérieur d'un conteneur Docker. Jusqu'à présent, je ne réussis pas. Lors de l'exécution glxgears j'obtiens l'erreur suivante.GLXGears ne fonctionne pas à l'intérieur de 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 

Mon fichier docker ressemble à ceci

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 

et moi avons commencé le récipient avec

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

Je actuellement, je ne sais pas que le nvidia-conducteur à l'intérieur des besoins de conteneurs avoir la même version. mais je ne sais pas comment vérifier si cela est même le problème.

nvidia-smi dit

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

I utilisé this comme un guide pour résoudre le problème, sans succès

Répondre

1

Quelle est la version NVIDIA docker utilisez-vous?

Je demande parce que jusqu'à il y a un mois, il n'y avait pas de support OpenGL dans la version 2.0 plus récente. Le mois dernier, ils ont créé un dockerfile avec OpenGL comme image de base.

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

engrenages GLX devraient travailler sur le dépôt ubuntu (utils mesa) dans le récipient en supposant que vous avez les pilotes NVIDIA installés sur votre hôte et vous vous transmettre les arguments d'affichage x11/bindmounts lorsque votre exécuter l'image . C'est ce que j'avais dans mon dockerfile.

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

Et les arguments de x11 que vous pouvez ajouter à la commande d'exécution docker lors du démarrage du conteneur sont:

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

Cette réponse contient des informations utiles, mais se lit comme un commentaire « Me Too ». Je suggérerais de reformuler le texte pour qu'il ressemble davantage à une réponse, sinon il risque d'être supprimé. – SiHa

+0

Merci pour le pourboire! Je viens de réparer. – Corey