2016-04-11 3 views
2

У меня есть настройка в Docker, которая используется для запуска приложения GUI в Docker в Ubuntu 14.04.03.Запуск нескольких графических интерфейсов в Docker с использованием пересылки X11

Приложение 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, в котором объясняется, как запускать firefox на докере с использованием пересылки X11. Как только я ищу запрос на firefox, запущенном в Docker, и попробуйте «Открыть в новом окне» для любого последующего удара, приложение работает. Я пробовал это с презумпцией, что это также приведет к невосприимчивому поведению, но, похоже, это не общий случай, и я настойчив только в своих сценариях.

Я понимаю, что это очень неопределенное описание проблемы, поскольку я не могу раскрывать детали приложений и среды. Будем очень благодарны за любые указатели на то, как обращаться с графическим приложением, которое порождает себя.

+0

Во-первых, вам не нужно писать: '-v /tmp/.X11-unix:/tmp/ .X11-unix' и '-e DISPLAY = $ DISPLAY'. '-v /tmp/.X11-unix \ -e DISPLAY' достаточно. –

+0

Я описал одно решение в качестве ответа. Я также могу быть другой проблемой: второе окно будет показано в другой среде, где значение переменной DISPLAY не задано. Попытайтесь написать больше о том, что происходит после нажатия этой кнопки. Запускает ли оно новое приложение? –

ответ

0

Это может быть проблема с аутентификацией X.

Попробуйте сделать следующее. На хосте:

  1. echo $DISPLAY и помните номер (что-то вроде :4)
  2. xauth list найти печенье с вышеуказанным номером и скопировать всю строку

Внутри Docker:

  1. xauth add <paste the copied line>

(Как вы не креплении контейнер, вы можете передать эту строку в run команду: /bin/bash -c "xauth add <cookie>; ./run_singleGUIapp.sh param1")