web-dev-qa-db-fra.com

Docker ne peut pas se connecter au serveur X

J'ai créé une image docker pour l'ouverture et la reconnaissance faciale pour simplifier le processus de configuration.

Mais le script reconnaissent.py a besoin de X Server pour afficher le résultat de l'image. Voici ce que j'ai fait jusqu'à présent:

Sudo docker run -t -d --name opencv opencv:latest
Sudo docker exec -it opencv bash /extract-embeddings.sh
Sudo docker exec -it opencv bash /train-model.sh

Tout va bien jusqu'à présent. La dernière étape est la comparaison réelle qui affiche le résultat dans une image.

Sudo docker exec -it opencv bash /face-recognition.sh

Il donne la sortie:

[INFO] loading face detector...
[INFO] loading face recognizer...
No protocol specified
: cannot connect to X server :0

J'ai essayé d'exécuter le conteneur avec la commande suivante:

Sudo docker run -t -d --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix opencv:latest

Mais ça n'aide pas.

4
Kasper Hansen

Essayez de faire ça,

xhost +

Sudo docker run --rm -ti --net=Host --ipc=Host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --env="QT_X11_NO_MITSHM=1" <image_name> <arguments>

D'autres pourraient rencontrer des problèmes concernant le fait que l'image ne soit pas rendue à l'écran ou sur un écran vierge sans image, pour eux, ajoutez --env="_X11_NO_MITSHM=1" au script ci-dessus lors de l'exécution de l'image docker. Cela résoudra le problème.

Pour plus d'informations, je vous recommande de consulter les références ci-dessous.

référence 1
référence 2

0
Afroz Chakure