【问题标题】:Docker cannot connect to X serverDocker 无法连接到 X 服务器
【发布时间】:2019-07-08 09:09:34
【问题描述】:

我已经为 opencv 和面部识别创建了一个 docker 镜像来简化设置过程。

但识别.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

但这并没有帮助。

【问题讨论】:

标签: docker xserver


【解决方案1】:

尝试运行这个,

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>

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

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

Reference 1
Reference 2

【讨论】:

  • 谢谢。我收到: cannot connect to X server /private/tmp/com.apple.launchd.zRvN9T3LeV/org.macosforge.xquartz:0
【解决方案2】:

看起来 xauth 是查看图像的问题。 详情在Can you run GUI applications in a Docker container?

【讨论】:

    【解决方案3】:

    可能还需要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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-23
      • 2019-04-20
      • 2012-03-25
      • 1970-01-01
      • 2018-12-20
      • 2021-10-25
      • 2016-08-10
      相关资源
      最近更新 更多