3

我在 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 应用程序将无法响应,并在一段时间后返回系统提示。

我尝试运行此链接中的示例,该链接解释了如何使用 X11 转发在 docker 上运行 firefox。一旦我在 Docker 中运行的 firefox 上搜索查询并尝试“在新窗口中打开”以获取任何后续命中,该应用程序就会工作。我假设它也会导致无响应行为,但似乎这不是一般情况,并且仅在我的脚本中持续存在。

我了解这是非常模糊的问题描述,因为我无法透露应用程序和环境的详细信息。任何有关如何处理自身产生的 GUI 应用程序的指针将不胜感激。

4

1 回答 1

0

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

尝试执行以下操作。在主机上:

  1. echo $DISPLAY并记住数字(类似:4
  2. xauth list找到上面数字的cookie并复制整行

Docker内部:

  1. xauth add <paste the copied line>

(由于您没有附加容器,您可以将此行传递给您的run命令/bin/bash -c "xauth add <cookie>; ./run_singleGUIapp.sh param1":)

于 2016-04-11T10:24:25.677 回答