在docker中想共享宿主机的显示器时,遇到如下错误绝对是头疼中的头疼
QXcbconnection: could not connect to display:0
我这里宿主机用echo $DISPLAY
时显示的是:0
注意如下都是在宿主机上操作。
网上查了有很多种方法
安装X11-server,xhost +的
sudo apt-get install x11-xserver-utils
xhost +
这样做之后还是会报同样的错误,连接不上display
下面是我试过的两个步骤,不知道是哪个步骤凑了效,反正是终于解决了
(上面的xhost + 也是要做的,不可省略)
1.设置ssh配置
sudo cp -p /etc/ssh/ssh_config /etc/ssh/ssh_config.BK
sudo vi /etc/ssh/ssh_config
改了如下3行(注释去掉,no改成yes)
Host *
ForwardAgent yes
ForwardX11 yes
ForwardX11Trusted yes
还安装了sshd,在/etc/ssh/sshd_config中改了如下一行
X11Forwarding yes
之后重启了一下计算机
2.安装vncserver
sudo su #在root权限下操作
sudo apt-get install tigervnc-standalone-server tigervnc-viewer
vncserver
输入一些密码就OK,中间也会报错,参考解决方法
再进入docker
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY --env="QT_X11_NO_MITSHM=1" <image名>
用rviz
测试,终于成功啦