Docker 无法连接到 X 服务器

Kas*_*sen 8 xserver docker

我为 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
Run Code Online (Sandbox Code Playgroud)

到目前为止一切都很好。最后一步是在图像中显示结果的实际比较。

sudo docker exec -it opencv bash /face-recognition.sh
Run Code Online (Sandbox Code Playgroud)

它给出了输出:

[INFO] loading face detector...
[INFO] loading face recognizer...
No protocol specified
: cannot connect to X server :0
Run Code Online (Sandbox Code Playgroud)

我尝试使用以下命令运行容器:

sudo docker run -t -d --name opencv -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix opencv:latest
Run Code Online (Sandbox Code Playgroud)

但它没有帮助。

Afr*_*ure 12

尝试运行这个,

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>
Run Code Online (Sandbox Code Playgroud)

其他人可能会面临图像未在屏幕上呈现或获得没有图像的空白屏幕的问题,因为他们--env="_X11_NO_MITSHM=1"在运行 docker 图像时添加到上述脚本中。它将解决问题。

有关更多信息,我建议你们查看以下参考资料。

参考文献 1
参考文献 2


小智 4

看起来 xauth 是查看图像的问题。详细信息位于您可以在 Docker 容器中运行 GUI 应用程序吗?