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 服务器中的相同配置