我有一个基于 Ubuntu 20.04 镜像的 Docker 容器。在这个 Docker 容器中,我想打开一个 Qt GUI。作为主机,我使用的是 Windows 10。
当使用 Linux 机器作为主机时,这种设置是值得讨论的。但对于 Windows 主机,情况并非如此。
找到后本网站之后,我尝试使用以下命令启动容器:
docker run --rm -it -e DISPLAY=host.docker.internal:0.0 mydockerimage:latest
然而,尝试运行 Qt GUI 会导致众所周知的错误
qt.qpa.xcb: could not connect to display host.docker.internal: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
经过一番研究,我注意到环境变量QT_X11_NO_MITSHM=1
是必需的。所以我更改了运行命令:
docker run --rm -it -e DISPLAY=host.docker.internal:0.0 -e QT_X11_NO_MITSHM=1 mydockerimage:latest
奇怪的是,所有 Qt GUI 都运行良好……一段时间。突然,上述错误又开始出现。我不知道发生了什么变化,但直到现在,我都没能让它再次工作。
因此,似乎可以在 Windows 上的 Ubuntu Docker 中运行 Qt GUI。但我似乎错过了一些东西,因为我无法让它可靠地工作。
有人知道发生了什么吗?如何让 GUI 应用程序再次运行?