[英]Docker cannot connect to X server
我为 opencv 和面部识别创建了一个 docker 图像以简化设置过程。
但是recognize.py 脚本需要X Server 来显示图像结果。 这是我到目前为止所做的:
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
到目前为止一切都很好。 最后一步是在图像中显示结果的实际比较。
sudo docker exec -it opencv bash /face-recognition.sh
它给出了输出:
[INFO] loading face detector...
[INFO] loading face recognizer...
No protocol specified
: cannot connect to X server :0
我尝试使用以下命令运行容器:
sudo docker run -t -d --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix opencv:latest
但它没有帮助。
尝试运行这个,
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>
其他人可能会面临图像未在屏幕上呈现或获得没有图像的空白屏幕的问题,因为他们在运行--env="_X11_NO_MITSHM=1"
图像时将--env="_X11_NO_MITSHM=1"
到上述脚本中。 它将解决问题。
有关更多信息,我建议你们查看以下参考资料。
看起来 xauth 是查看图像的问题。 详细信息位于您能否在 Docker 容器中运行 GUI 应用程序?
也可能需要XAuthority
。
首先,确保定义了主机的$XAUTHORITY
。 其次,将以下参数添加到docker run
命令:
-v $XAUTHORITY:/tmp/.XAuthority -e XAUTHORITY=/tmp/.XAuthority
完整命令的示例:
sudo docker run --rm -ti --net=host --ipc=host -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v $XAUTHORITY:/tmp/.XAuthority -e XAUTHORITY=/tmp/.XAuthority --env="QT_X11_NO_MITSHM=1" <image_name> <arguments>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.