如何在Windows主机中使用Vcxsrv从Linux Docker容器的多个bashes中获得多个GUI显示



我目前有一个Ubuntu docker容器来运行名为Gazebo和ROS的GUI应用程序。我使用Vcxsrv在我的windows主机操作系统上运行GUI,并且能够显示GUI。然而,问题是,我一次只能从我正在运行的docker容器的一个bash中显示一个GUI,因为我可以在第一个docker容器bash中运行我的第一个GUI程序Gazebo。但在我用";docker exec-it bash;然后运行另一个GUI程序,比如一个名为Rviz的程序,我在这里得到了错误:

root@:/# rviz
qt.qpa.xcb: could not connect to display [ip here].1:0.0
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.
Aborted

因此,我尝试运行我的";config.xlaunch";文件,然后执行rviz命令,但出现了相同的错误。之后,我看了看任务栏右侧的vcxsrv小图标,其中一个图标上写着";桌面-Q:0.0-7个客户端";这对应于我运行的第一个GUI应用程序。然而,第二个图标显示";桌面-Q:1.0-0客户端";它应该运行我的第二个GUI应用程序。因此,我想知道我需要做些什么才能让多个GUI应用程序在同一个运行容器的多个docker-bash中运行?非常感谢。

原来我不得不围绕Docker容器中的DISPLAY环境变量从虚拟以太网更改为无线适配器,反之亦然。在我启动了一个GUI程序之后,我就这样做了。在您能够启动第二个GUI程序之后,您就不必再切换环境变量了。这个解决方案似乎不是最好的,因此请随时发布更好的解决方案。

最新更新