2016-03-25 1 views
1

Я хотел бы запустить firefox (или любое графическое приложение) внутри контейнера докеров.Использование приложения VNCserver + GUI + Виртуальный дисплей в контейнере Docker

Мое требование: Когда я запускаю контейнер, мне нужно создать виртуальный дисплей, запустить VNC-сервер, а затем приложение GUI. Это означает, что после успешного запуска контейнера я могу подключиться к графическому интерфейсу, запущенному внутри контейнера через клиент VNC. Когда я закрываю приложение, контейнер должен автоматически останавливаться.

Попытка 1: Я начал с примера здесь https://hub.docker.com/r/devopsil/vnc-firefox/~/dockerfile/ В этом примере разработчик запускает сервер VNC через CMD и держит это работает навсегда. Он помещает firefox как часть файла .rc, поэтому он запускается при запуске контейнера. Если вы подключаетесь через клиент VNC, вы можете видеть firefox и, как ожидается, закрытие firefox или отключение сеанса VNC не останавливает контейнер.

Попытка 2: Я настроил файл докеров следующим образом. Изменена только последняя строка (заменить CMD с Entrypoint и снял «навсегда» флаг»)

ENTRYPOINT ["/usr/bin/x11vnc", "-usepw", "-create"] 

Перестройку и работает контейнер„Докер запустить --rm -p 5900“был другое поведение теперь: стартов контейнеров , соединение через клиент VNC работало, firefox открылся через несколько секунд (подождите, пока сообщение «расширение RANDR отсутствует на дисплее: 20»), и контейнер остановился автоматически после закрытия vnc-соединения.

Покушение 3: Затем я создал Баш скрипт для запуска VNCserver и светлячок и изменил Dockerfile скопировать этот файл сценария внутри изображения и сделал скрипт в качестве точки входа. Но я получил ошибку, подобную «переменная Display не установлено»

#!/bin/bash 
/usr/bin/x11vnc -forever -usepw -create & 
firefox 

ПОПЫТКА 4: Так что я передал переменную DISPLAY с помощью команды Докер выполнения, но тогда ошибка не может открыть дисплей.

Вопрос: Я не знаю, как понравится виртуальный дисплей, созданный флагом vncserver «-создать» для firefox. Пожалуйста, дайте мне знать, что лучше всего запустить приложение GUI при запуске контейнера и автоматически остановить контейнер, когда приложение GUI будет закрыто. Я считаю, что ENTRYPOINT в файле dockerfile должен быть установлен в firefox. Спасибо за вашу помощь.

Я видел это https://blog.jessfraz.com/post/docker-containers-on-the-desktop/, но это бесполезно для меня, поскольку я хочу получить доступ к приложению удаленно через VNC.

ответ

2

мне удалось нашел решение:

Изменен скрипт в Покушение 3 выше следующим образом работал

!/bin/bash 

Xvfb :1 -screen 0 800x600x16 & 
/usr/bin/x11vnc -display :1.0 -usepw & 
DISPLAY=:1.0 
export DISPLAY 
firefox 

Приветствия.

+0

Возможно, мы сможем запустить '/ usr/bin/x11vnc -display: 1.0 -usepw -forever &'. – so61pi

Смежные вопросы