Docker:使用远程 X 服务器运行应用程序

Posted

技术标签:

【中文标题】Docker:使用远程 X 服务器运行应用程序【英文标题】:Docker: running application with a remote X-server 【发布时间】:2016-06-03 09:29:08 【问题描述】:

我目前在一个容器中与 Xvfb 和 X11VNC 一起运行我的应用程序。这一切都很好,我可以通过任何 VNC 客户端看到 GUI。 但是,我想在容器 A 中运行 Xvfb 和 X11VNC,在容器 B 中运行我的应用程序。

容器 A 启动为例如 docker run -it --rm --name x11 -p 6000-6100:6000-6100 myimagewithXvfb

在 B 中,我设置为 DISPLAY=A,以指向容器 A 中的 X 服务器 (XVfb)。

在 B 中,我开始例如xeyes,但我得到了错误: root@a1ec4b67e98f:/# xeyes 错误:无法打开显示:10.1.0.1 root@a1ec4b67e98f:/# echo $DISPLAY 10.1.0.1

同样使用 10.1.0.1:0 也没关系。

无论如何,如果可能的话,问题是如何让它发挥作用?

【问题讨论】:

您找到解决方案了吗? 【参考方案1】:

没有更多信息很难确定,但我猜你的问题与 X 权限有关。您可以使用 xhost 命令允许客户端在没有访问控制的情况下进行连接:

A> xhost +
B> export DISPLAY=10.1.0.1:0
B> xeyes

一种更安全的方法是在容器 A 上通过 ssh 到容器 B,如下所示:

A> ssh -Y B
B> xeyes

(这里不需要手动设置 DISPLAY 环境变量,因为它是由 SSH 自动设置的。)

【讨论】:

xhost + 解决了它。虽然确保它在 x11vnc 启动之后完成。

以上是关于Docker:使用远程 X 服务器运行应用程序的主要内容,如果未能解决你的问题,请参考以下文章

无法使用桥接网络模式从 docker 容器连接到远程 SQL 服务器

需要使用远程 API 运行同一镜像的多个容器,同一 docker 服务器中的相同配置

docker容器内远程调试运行进程

在docker中远程调用PhantomJS

无法从 WebStorm 调试远程 docker node.js 应用程序

使用远程调试运行 docker-compose。智能,Java 11