使用X11转发在Docker中运行多个GUI

时间:2016-04-11 10:17:21

标签: docker x11-forwarding

我在Docker中有一个设置,用于在Ubuntu 14.04.03中的Docker中运行GUI应用程序。

使用带有必要参数的脚本文件启动GUI应用程序。如果应用程序只有一个窗口,设置工作正常,我可以通过执行X11转发轻松查看结果。这是我用来运行应用程序的命令

sudo docker run -it \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
-w /Apps/ \
--rm appsdocker:v1 \
/bin/bash -c "./run_singleGUIapp.sh param1"

但是如果GUI有一个按钮,当点击它时,打开一个新窗口,GUI应用程序无法响应,一段时间后返回到系统提示符。

我尝试运行此link中的示例,该示例解释了如何使用X11转发在docker上运行firefox。一旦我在Docker中运行的Firefox上搜索查询,并尝试在新窗口中打开'对于任何后续命中,该应用程序工作。我试过这个假设,它也会导致一个无响应的行为,但似乎这不是一般情况,只是我的脚本是持久的。

据我所知,这是一个非常模糊的问题描述,因为我无法透露应用程序和环境的细节。关于如何处理产生自身的GUI应用程序的任何指针都将非常感激。

1 个答案:

答案 0 :(得分:0)

这可能是X身份验证的问题。

尝试执行以下操作。在主持人:

  1. echo $DISPLAY并记住数字(类似于:4
  2. xauth list找到上面带数字的Cookie并复制整行
  3. Docker内部:

    1. xauth add <paste the copied line>
    2. (由于您没有附加容器,您可以将此行传递到run命令:/bin/bash -c "xauth add <cookie>; ./run_singleGUIapp.sh param1"