Docker: запуск приложения с удаленным X-сервером

В настоящее время я запускаю свое приложение в контейнере вместе с Xvfb и X11VNC. Все это прекрасно работает, и я могу видеть графический интерфейс через любой клиент VNC. Однако я хотел бы запустить Xvfb и X11VNC в контейнере A, а мое приложение — в контейнере B.

Контейнер A запускается, например. docker run -it --rm --name x11 -p 6000-6100:6000-6100 myimagewithXvfb

В B я установил DISPLAY=A, чтобы указать на X-сервер (XVfb) в контейнере A.

В B я начинаю, например. xeyes, но я получаю сообщение об ошибке: root@a1ec4b67e98f:/# xeyes Ошибка: невозможно открыть дисплей: 10.1.0.1 root@a1ec4b67e98f:/# echo $DISPLAY 10.1.0.1

Также использование 10.1.0.1:0 не имеет значения.

В любом случае, вопрос в том, как заставить это работать, если это вообще возможно?


person bergtwvd    schedule 03.06.2016    source источник
comment
Вы нашли решение?   -  person neshkeev    schedule 20.03.2017


Ответы (1)


Без дополнительной информации трудно сказать наверняка, но я предполагаю, что ваша проблема связана с полномочиями X. Вы также можете разрешить клиентам подключаться без контроля доступа с помощью команды xhost:

A> xhost +
B> export DISPLAY=10.1.0.1:0
B> xeyes

Более безопасный способ — это ssh для контейнера A и контейнера B следующим образом:

A> ssh -Y B
B> xeyes

(Здесь вам не нужно вручную устанавливать переменную окружения DISPLAY, так как она устанавливается SSH автоматически.)

person FrodeTennebo    schedule 06.06.2016
comment
Xhost + решил это. Хотя убедитесь, что это сделано ПОСЛЕ запуска x11vnc. - person bergtwvd; 21.03.2017