Видео драйвер под контейнером lxc?

Поскольку LXC (Linux Containers) является супер-chroot уровня ядра, мне было интересно, какой тип видеодрайвера имеют контейнеры:

Мой хост - Ubuntu 12.04 64-битный компьютер с графическим процессором ATI. Будет ли контейнер LXC иметь доступ к тому же драйверу? Или они должны быть установлены на каждом контейнере?

4
задан 17.02.2020, 15:59

3 ответа

Пожалуйста, взгляните на этот скрипт, чтобы создать контейнер LXC, который запускает пар с ускорением звука и видео:

http://bazaar.launchpad.net/~ubuntu-lxc/lxc / steam-lxc / view / head: / steam-lxc

Волшебство приходит сюда:

Вне LXC:

    # Add the bind mounts to the container's fstab
    self.container.set_config_item("lxc.mount.entry",
                                   "/tmp/.X11-unix tmp/.X11-unix "
                                   "none bind,ro")
    self.container.set_config_item("lxc.mount.entry",
                                   "/dev/dri dev/dri none bind,ro")
    self.container.set_config_item("lxc.mount.entry",
                                   "%s/pulse.socket home/%s/.pulse_socket "
                                   "none bind,ro" % (self.config_path,
                                                     self.user.pw_name))

Мы экспортируем X11 с bind mount каталог /tmp/.X11-unix, чтобы позволить контейнеру использовать хост X11. Сделайте то же самое с каталогом /dev/dri и аудиоразъемом.

Внутри LXC:

    # Get pulseaudio to listen on the socket
    with self.user_privileges():
        subprocess.call(['pactl', 'load-module',
                        'module-native-protocol-unix',
                        'socket=%s' % self.pulse_socket,
                        'auth-cookie-enabled=0'])

    # Start steam
    self.run_command(
        ["steam"], {'DISPLAY': os.environ['DISPLAY'],
                    'PULSE_SERVER': "/home/%s/.pulse_socket" %
                                    self.user.pw_name})

Использует pactl для использования сокета Unix для связи с хост-сервером импульсного аудио-сервера, а затем экспортирует сокет и переменную среды DISPLAY, чтобы позволить steam использовать локальный сервер X11. и сокет для аудио сервера.

Взгляните на сценарий и наслаждайтесь им:)

С этими переменными среды внутри LXC вы можете (теоретически) играть практически во все игры.

С наилучшими пожеланиями!

4
ответ дан 17.02.2020, 15:59
  • 1
    Вот репозиторий GitHub с кодом, используемым в видео: github.com/ojgarciab/docker3d – VonC 17.02.2020, 16:00
  • 2
    интересный. Вы попытались иметь по крайней мере 2 одновременных контейнера с помощью ускорения HW? – Love and peace - Joe Codeswell 17.02.2020, 16:00
  • 3
    таким образом, create.sh и create2.sh создают эти два контейнера и start.sh, и start2.sh запускают каждого отдельно. Что делает make.sh, делают и в том, какой порядок это должно быть выполнено? – Pure.Krome 17.02.2020, 16:00
  • 4
    Извините за задержку. Да, возможно выполнить несколько контейнеров LXC и запустить одновременно несколько ускоренных приложений. Смотрите к этому видео, которое я записал для Вас: youtu.be/RAUtZBaN1Oo – Pure.Krome 17.02.2020, 16:01
  • 5
    Нет, I' m в настоящее время с помощью Докера (не простой LXC) для выполнения Беседки 5 контейнеров, я didn' t пытаются выполнить два контейнера, запускающие ускоренные приложения сразу. I' ll пробуют его этим днем и I' ll говорят Вам, если это работает (я думаю это it' работа ll). – VonC 17.02.2020, 16:01

Технологии виртуализации на основе контейнеров, такие как OpenVZ и LXC, не виртуализируют никакое оборудование, в отличие от Xen, KVM, VMware и т. Д. Еще одно важное отличие заключается в том, что контейнеры LXC / OpenVZ работают в одном и том же экземпляре одного Linux ядро, в то время как реальные виртуальные машины работают с собственным ядром.

Поскольку контейнеры находятся внутри одного и того же ядра и не управляют каким-либо оборудованием, они «работают» с одним и тем же драйвером, но у них нет никакого знания об этом. Все процессы просто хромируются, и это полностью не зависит от аппаратных драйверов (модулей ядра).

0
ответ дан 17.02.2020, 16:00
  • 1
    @lurscher I can' t говорят то, что Вы будете видеть на своих аппаратных средствах. Обычно, люди не выполняют ничего непосредственно связанного с аппаратными средствами в контейнерах. Так или иначе я думаю , эта статья могла бы дать Вам некоторое понимание. – Maciej Sikora 17.02.2020, 16:00
  • 2
    таким образом вопрос: если я работаю LIBGL_DEBUG=verbose glxinfo | grep rendering внутренняя часть lxc контейнерная консоль, буду я видеть " прямой рендеринг: yes"? –  17.02.2020, 16:00
  • 3
    я имею в виду, я вижу прямой рендеринг: да на хосте, но этом doesn' t переводят непосредственно в контейнер, потому что установка системы (включая fglrx драйвер) не будет совместно использована с контейнерами, правильно? Та статья, кажется, указывает, что [по крайней мере 110] [приблизительно 110], прямой рендеринг является возможным использованием драйвера с открытым исходным кодом, который является хорошим планом нейтрализации относительно меня, но если бы я мог бы полагаться на propietary fglrx ati драйвер, это было бы золотым – PCheese 17.02.2020, 16:01

Насколько мне известно, контейнеры lxc будут иметь доступ к водителю. проверьте этот сайт для получения дополнительной информации http://libvirt.org/drvlxc.html

-1
ответ дан 17.02.2020, 16:00
  • 1
    Ваша ссылка является страницей о клиенте/плагине LXC Libvirt, они называют ' driver'. я don' t видят, что любая информация расценивает видеодрайверы или одинаково. – PCheese 17.02.2020, 16:00

Теги

Похожие вопросы