如何使用Docker在Windows上运行Linux容器中的GUI应用程序?

5
我有一个基于QT的GUI应用程序,我在docker(centos镜像)中编译了它。我能够从我的Linux机器(OpenSUSE 13.2)内部启动Centos镜像中的GUI应用程序。按照这篇博客的指示 "http://fabiorehm.com/blog/2014/09/11/running-gui-apps-with-docker"。
同样的事情我想通过窗口实现。我安装了窗口docker。我加载了所需的centos镜像,其中包含我的GUI应用程序,并通过终端尝试使用容器启动GUI。它会出现错误,显示“gui:无法连接到X服务器”。
是否有任何想法或解决方案。
3个回答

3

在MacOS上有一个类似的讨论:docker issue 8710

一种比较简单粗暴的方法:

启动 socat,将本地的 xquartz socket 暴露到一个 TCP 端口上。

socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"

(注意:对于Windows系统,您至少需要以下内容:

将显示器传递给容器(假设virtualbox主机位于192.168.59.3上):

)
 docker run -e DISPLAY=192.168.59.3:0 jess/geary

(在公共网络上这是不安全的,为了限制访问,请使用socat的bindsurange选项。)

谢谢,我会试一下这些。 - pgh

2
我启动了vncserver,然后可以通过vncviewer查看我的应用程序。

0
这个解决方案基于Robin Kretzschmar的博客文章。我用以下的Dockerfile进行了测试。
FROM ubuntu:22.10
RUN apt-get update 
RUN apt-get install -y kate
CMD kate

容器是用建造的

docker build . -t test/kate

在您的Windows主机上,您需要安装一个X服务器,我使用的是VcSrv。在您启动VcSrv之后,可以运行
docker run -ti --rm -e DISPLAY=host.docker.internal:0.0 test/kate

并显示了一个kate的实例

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接