2014-11-28 5 views
2

Я создал контейнер для докеров с X-сервером внутри. Я использую его для частичного отображения OpenGL. Этот контейнер должен работать в любой системе (с запуском X-сервера или без него), и он должен использовать аппаратный GPU, если он существует (поэтому я не могу использовать xvfb).Экран хоста отключается, когда я запускаю X-сервер в контейнере докеров

Когда я использую этот контейнер на серверной системе без GUI, все работает отлично. Но когда я запускаю контейнер на рабочем столе Ubuntu 14.04, экран отключается при каждом запуске X-сервера в моем контейнере.

Я запускаю контейнер с --priviliged, так что/dev папка делится с контейнером. Я считаю, что это связано с каким-то конфликтом.

Есть ли способ запустить X внутри контейнера, такой как сервер хоста X, по-прежнему работает?

UPDATE:

Я вижу следующее Xorg.0.log:

AIGLX: Suspending AIGLX clients for VT switch 
(II) NOUVEAU(0): NVLeaveVT is called. 

UPDATE:

Могу ли я использовать Xvfb вместо реального сервера Xorg? Поддерживает ли он фактическое рендеринг графического оборудования?

+1

Похоже, он пытается захватить оборудование GPU и ему разрешено. Это не закончится хорошо. –

ответ

2

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

Вместо этого вы можете использовать X-сервер на хосте из контейнера путем привязки к X-серверному сокету. Этот ответ SO объясняет, как: https://stackoverflow.com/a/25334301/4332

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

+1

Не рекомендуется использовать хост-сервер X, потому что он может не существовать. В идеале, я бы хотел, чтобы решение работало как на настольных, так и на серверных машинах. Мне нужен X-сервер, потому что мне нужно «отображать» в инициализации контекста OpenGL: Display * display = XOpenDisplay (displayName); –

+0

Могу ли я использовать XVFB для работы XOpenDisplay? –

+0

Извините, я понятия не имею. –

0

Если вы не против использования CPU для OpenGL, вы можете настроить X-сервер внутри контейнера с помощью видеодрайвера Xdummy с расширениями GLX. Но, конечно, вы не сможете ничего увидеть, потому что видеодрайвер, ну, фиктивный.

Если вы хотите играть с графическими интерфейсами, попробуйте TurboVNC + VirtualGL и используйте сервер Xdummy как сервер 3D X.

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

  • Нет связанных вопросов^_^