Запуск нескольких графических интерфейсов в Docker с использованием переадресации X11

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

Приложение с графическим интерфейсом запускается с помощью файла сценария с необходимыми параметрами. Настройка работает нормально, если приложение имеет только одно окно, и я могу легко просмотреть результаты, выполнив пересылку 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"

Но если в графическом интерфейсе есть кнопка, при нажатии которой открывается новое окно, приложение с графическим интерфейсом не отвечает и через некоторое время возвращается к системной подсказке.

Я попытался запустить пример по этой ссылке. в котором объясняется, как запустить Firefox на докере с использованием пересылки X11. Как только я ищу запрос в Firefox, работающем в Docker, и пытаюсь «Открыть в новом окне» для любого последующего попадания, приложение работает. Я попробовал это с предположением, что это также приведет к невосприимчивому поведению, но, похоже, это не общий случай и сохраняется только с моими сценариями.

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


person GvanJoic    schedule 11.04.2016    source источник
comment
Во-первых, вам не нужно писать: -v /tmp/.X11-unix:/tmp/.X11-unix и -e DISPLAY=$DISPLAY. -v /tmp/.X11-unix \ -e DISPLAY достаточно.   -  person Piotr Aleksander Chmielowski    schedule 11.04.2016
comment
Я описал одно решение как ответ. У меня может быть и другая проблема: второе окно будет отображаться в другой среде, где значение переменной DISPLAY не установлено. Попробуйте написать больше о том, что происходит после нажатия этой кнопки. Он запускает новое приложение?   -  person Piotr Aleksander Chmielowski    schedule 11.04.2016


Ответы (1)


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

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

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

Внутри Докера:

  1. xauth add <paste the copied line>

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

person Piotr Aleksander Chmielowski    schedule 11.04.2016