docker - як запустити х робочий стіл у контейнері?


10

Я намагаюся налаштувати свою машину Linux для запуску декількох гостьових ОС, однією з них є VM Windows, а інша - контейнер Linux. Мета полягає в тому, щоб запобігти мені зіпсувати хост-систему, будучи вільним керувати базовою операційною системою та грати з обладнанням хоста. Врешті-решт, поверх роботи мого робочого столу в контейнері, я сподіваюся запустити графічні прискорені імітації тощо. Оскільки у Докера є така приємна версія git-подібної версії контейнерів, здавалося б, було б гарною ідеєю її використовувати. Можливо, libvirt буде так само добре з LXC, але привілейований режим докера полегшує не налаштовувати пристрої на контейнер.

Я провів невелике дослідження і вже придумав декілька відповідей, але у мене виникають проблеми зібрати все це разом.

Фон в LXC

Запуск X від LXC допоміг мені зрозуміти, як я можу налаштувати контейнер з (тобто):

lxc.cgroup.devices.allow = c 226:0 rwm

і використання

mknod -m 666 dri/card0 c 226 0

всередині контейнера для підключення до хост-пристрою.

Докер

Від cuda - Використовуючи GPU з докерного контейнера , я побачив, що я можу отримати таку ж установку, щоб працювати в Docker із сервісом LXC.

Мені здалося, що якщо контейнер докера запускається в привілейованому режимі, він може отримати доступ до GPU нормально без додаткової конфігурації. Отже, я запустив базову систему, встановив графічні драйвери, xorg-сервер, xorg-xinit та менеджер вікон, щоб перевірити це.

Спочатку спробуйте

# startx
Cannot run from a console (or some message like that)

Гаразд, я думав, що я на tty2.

# tty
/dev/console

Це не те, чого я очікував.

# chvt 2
# tty
/dev/tty2

Ну, схоже, що це спрацювало. Спробуємо ще # startxраз. Він запустив менеджер вікон із курсором у центрі. Немає відповіді миші. Немає відповіді клавіатури Спробуємо змінити tty на Ctrl-Alt+F3. Немає відповіді. Ну, схоже, мені доведеться перезавантажувати холод.

Друга спроба

# tty
/dev/console
# chvt 2
# tty
/dev/console

Що? Я не можу це змінити зараз?

Продовження

Спробувавши інший раз, я змусив її змінити tty, і startx знову заморозив комп'ютер.

Що тепер?

Отже, я зараз нападаю. Я дуже хочу, щоб я міг використовувати контейнер - вважав за краще Докер, LXC з libvirt також прийнятний - запускати як мою щоденну операційну систему, зберігаючи пісну хост ОС.

Тут найкраще використовувати Docker з привілейованим режимом або використовувати явний вихідний сервер LXC та спробувати перелічені вище варіанти?

Я вже планую використовувати libvirt (можливо, за допомогою vagrant-libvirt) для управління моїм Windows vm, тож було б приблизно таким же чином для мене використовувати libvirt або vagrant-LXC?

Редагувати: читаючи LXC проти Docker , я відчуваю, що оскільки контейнери Docker і Docker призначені для середовищ із одним додатком, можливо, було б найкраще використовувати LXC замість Docker для роботи як моєї щоденної операційної системи. Думки?

Редагувати: Я виявив, що, як і докер, є команда lxc-пристрою, яка дозволяє мені обходити групи та кроки mknod. Якщо раніше мені вдалося змусити x запустити та заморозити свою систему, це просто помилки. Можливо, я можу це врешті-решт зрозуміти, оскільки, здається, нікого там немає.

Оновлення: у мене працює миша. В гостях я встановив xf86-input-mouse та xf86-input-клавіатуру. В хості я побіг наступне:

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

Працює!


Я майже впевнений, що LXC - це те, що мені потрібно використовувати, а не Docker. На жаль, досить важко знайти сучасну документацію щодо прив’язки конкретного tty до контейнера, щоб я міг запустити X. І мій хост, і гість використовують systemd, тоді як вся документація навколо / etc / inittab пов'язана. Хтось знає, як правильно працювати з LXC-контейнерами, щоб змусити їх "володіти" Tty на хості?
Пол

Коли я дав Lxc свій TTY і правонаступник відеокарту до неї, я спробував startxз exec twm, але все це було заморожено з моєї точки зору. Немає відповіді на клавіатурі чи миші.
Павло

unix.stackexchange.com/questions/18003/linux-lxc-deploying-images-with-tiniest-possible-x11, схоже, має відповідну відповідь. Я думаю, що мені потрібно переслати ланцюг / dev / input. Я спробую це.
Пол

Здається, що unix.stackexchange.com/questions/18003/… отримав відповідь, повідомляє irclog.perlgeek.de/crimsonfu/2015-03-23#i_10327389
Філіп Дурбін,

Ну, я подумав, що клавіатуру розібрав. Але тепер це не працює знову.
Павло

Відповіді:


1

На це запитання була відповідь, яка мені потрібна. Звичайно, я використовував lxc-deviceзамість визначень cgroup у файлі config. Однак у моєму випадку я змусив клавіатуру працювати в X лише тоді, коли запускаю її на іншому tty.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.